private static MetricRange TryGetMetricRange( double[] values, int minPercentile, int maxPercentile) { Code.BugIf(minPercentile > maxPercentile, "minPercentile>maxPercentile"); if (!CheckValues(values)) { return(MetricRange.Empty); } minPercentile = _percentileRange.Clamp(minPercentile); maxPercentile = _percentileRange.Clamp(maxPercentile); var statValues = new Statistics(values); var minValue = statValues.Percentiles.Percentile(minPercentile); var maxValue = statValues.Percentiles.Percentile(maxPercentile); // NB: min may be less then max due to rounding errors if (minValue > maxValue) { minValue = maxValue; } return(MetricValueHelpers.CreateMetricRange(minValue, maxValue)); }
public MetricRange TryGetRelativeLimitValues(double[] values, double[] baselineValues) { var result = TryGetRelativeMeanValue(values, baselineValues); if (result == null) { return(MetricRange.Empty); } var minRatio = result * 0.98; // 0.99*0.99 accuracy var maxRatio = result * 1.02; // 1.01*1.01 accuracy return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio)); }
public MetricRange TryGetLimitValues(double[] values) { var result = TryGetMeanValue(values); if (result == null) { return(MetricRange.Empty); } var minRatio = result * 0.99; // 0.99 accuracy var maxRatio = result * 1.01; // 1.01 accuracy return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio)); }
private static MetricRange TryGetMetricRange( double[] values, double[] baselineValues, int minPercentile, int maxPercentile) { Code.BugIf(minPercentile > maxPercentile, "minPercentile>maxPercentile"); if (!CheckValues(values, baselineValues)) { return(MetricRange.Empty); } minPercentile = _percentileRange.Clamp(minPercentile); maxPercentile = _percentileRange.Clamp(maxPercentile); var statBaseline = new Statistics(baselineValues); var minBaseline = statBaseline.Percentiles.Percentile(minPercentile); var maxBaseline = statBaseline.Percentiles.Percentile(maxPercentile); if (minBaseline.Equals(0) || maxBaseline.Equals(0)) { return(MetricRange.Empty); } var statValues = new Statistics(values); var minValue = statValues.Percentiles.Percentile(minPercentile); var maxValue = statValues.Percentiles.Percentile(maxPercentile); // NB: min may be less then max due to rounding errors if (minValue > maxValue) { minValue = maxValue; } var minRatio = minValue / minBaseline; var maxRatio = maxValue / maxBaseline; if (minRatio > maxRatio) { minRatio = maxRatio; } return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio)); }
private static MetricRange TryGetMetricRange( double[] values, double[] baselineValues, int minPercentile, int maxPercentile) { Code.BugIf(minPercentile > maxPercentile, "minPercentile>maxPercentile"); if (!CheckValues(values, baselineValues)) { return(MetricRange.Empty); } minPercentile = _percentileRange.Clamp(minPercentile); maxPercentile = _percentileRange.Clamp(maxPercentile); var statBaseline = new Statistics(baselineValues); var minBaseline = statBaseline.Percentiles.Percentile(minPercentile); var maxBaseline = statBaseline.Percentiles.Percentile(maxPercentile); // ReSharper disable CompareOfFloatsByEqualityOperator if (minBaseline == 0 || maxBaseline == 0) { // ReSharper restore CompareOfFloatsByEqualityOperator return(MetricRange.Empty); } var statValues = new Statistics(values); var minValues = statValues.Percentiles.Percentile(minPercentile); var maxValues = statValues.Percentiles.Percentile(maxPercentile); var minRatio = minValues / minBaseline; var maxRatio = maxValues / maxBaseline; if (minRatio > maxRatio) { minRatio = maxRatio; } return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio)); }
public MetricRange TryGetRelativeActualValues(double[] values, double[] baselineValues) { var result = TryGetRelativeMeanValue(values, baselineValues); return(result == null ? MetricRange.Empty : MetricValueHelpers.CreateMetricRange(result, result)); }
public MetricRange TryGetActualValues(double[] values) { var result = TryGetMeanValue(values); return(result == null ? MetricRange.Empty : MetricValueHelpers.CreateMetricRange(result, result)); }