WeibullDistribution extends AbstractRealDistribution { @Override public double inverseCumulativeProbability(double p) { double ret; if (p < 0.0 || p > 1.0) { throw new OutOfRangeException(p, 0.0, 1.0); } else if (p == 0) { ret = 0.0; } else if (p == 1) { ret = Double.POSITIVE_INFINITY; } else { ret = scale * FastMath.pow(-FastMath.log1p(-p), 1.0 / shape); } return ret; } WeibullDistribution(double alpha, double beta);  WeibullDistribution(double alpha, double beta,
                               double inverseCumAccuracy);  WeibullDistribution(RandomGenerator rng, double alpha, double beta);  WeibullDistribution(RandomGenerator rng,
                               double alpha,
                               double beta,
                               double inverseCumAccuracy); double getShape(); double getScale(); double density(double x); @Override double logDensity(double x); double cumulativeProbability(double x); @Override double inverseCumulativeProbability(double p); double getNumericalMean(); double getNumericalVariance(); double getSupportLowerBound(); double getSupportUpperBound(); boolean isSupportLowerBoundInclusive(); boolean isSupportUpperBoundInclusive(); boolean isSupportConnected(); static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY; }
@Test public void testInverseCumulativeProbabilitySmallPAccuracy() { WeibullDistribution dist = new WeibullDistribution(2, 3); double t = dist.inverseCumulativeProbability(1e-17); Assert.assertEquals(9.48683298050514e-9, t, 1e-17); }