public InnerQuantiles(int quantileCount, CanGetQuantile canGetQuantile) { if (quantileCount == 0) { throw new ArgumentException("quantileCount == 0", nameof(quantiles)); } this.quantiles = new double[quantileCount]; for (int i = 0; i < quantileCount; i++) { this.quantiles[i] = canGetQuantile.GetQuantile((i + 1.0) / (quantileCount + 1.0)); } OuterQuantiles.AssertFinite(quantiles, nameof(canGetQuantile)); OuterQuantiles.AssertNondecreasing(quantiles, nameof(canGetQuantile)); lowerGaussian = GetLowerGaussian(quantiles); upperGaussian = GetUpperGaussian(quantiles); }
public InnerQuantiles(double[] quantiles) { if (quantiles == null) { throw new ArgumentNullException(nameof(quantiles)); } if (quantiles.Length == 0) { throw new ArgumentException("quantiles array is empty", nameof(quantiles)); } OuterQuantiles.AssertFinite(quantiles, nameof(quantiles)); OuterQuantiles.AssertNondecreasing(quantiles, nameof(quantiles)); this.quantiles = quantiles; lowerGaussian = GetLowerGaussian(quantiles); upperGaussian = GetUpperGaussian(quantiles); }