Author: psteitz Date: Sun Mar 21 21:10:07 2010 New Revision: 925900 URL: http://svn.apache.org/viewvc?rev=925900&view=rev Log: Made inverse cum accuracy configurable for remaining continuous distributions.
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/BetaDistributionImpl.java commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/CauchyDistributionImpl.java commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/BetaDistributionImpl.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/BetaDistributionImpl.java?rev=925900&r1=925899&r2=925900&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/BetaDistributionImpl.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/BetaDistributionImpl.java Sun Mar 21 21:10:07 2010 @@ -36,6 +36,12 @@ import org.apache.commons.math.special.B public class BetaDistributionImpl extends AbstractContinuousDistribution implements BetaDistribution { + /** + * Default inverse cumulative probability accurac + * @since 2.1 + */ + public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY = 1e-9; + /** Serializable version identifier. */ private static final long serialVersionUID = -1221965979403477668L; @@ -50,15 +56,31 @@ public class BetaDistributionImpl */ private double z; + /** Inverse cumulative probability accuracy */ + private final double solverAbsoluteAccuracy; + /** * Build a new instance. * @param alpha first shape parameter (must be positive) * @param beta second shape parameter (must be positive) + * @param inverseCumAccuracy the maximum absolute error in inverse cumulative probability estimates + * (defaults to {...@link #DEFAULT_INVERSE_ABSOLUTE_ACCURACY}) + * @since 2.1 */ - public BetaDistributionImpl(double alpha, double beta) { + public BetaDistributionImpl(double alpha, double beta, double inverseCumAccuracy) { this.alpha = alpha; this.beta = beta; z = Double.NaN; + solverAbsoluteAccuracy = inverseCumAccuracy; + } + + /** + * Build a new instance. + * @param alpha first shape parameter (must be positive) + * @param beta second shape parameter (must be positive) + */ + public BetaDistributionImpl(double alpha, double beta) { + this(alpha, beta, DEFAULT_INVERSE_ABSOLUTE_ACCURACY); } /** {...@inheritdoc} @@ -185,4 +207,16 @@ public class BetaDistributionImpl public double cumulativeProbability(double x0, double x1) throws MathException { return cumulativeProbability(x1) - cumulativeProbability(x0); } + + /** + * Return the absolute accuracy setting of the solver used to estimate + * inverse cumulative probabilities. + * + * @return the solver absolute accuracy + * @since 2.1 + */ + @Override + protected double getSolverAbsoluteAccuracy() { + return solverAbsoluteAccuracy; + } } Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/CauchyDistributionImpl.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/CauchyDistributionImpl.java?rev=925900&r1=925899&r2=925900&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/CauchyDistributionImpl.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/CauchyDistributionImpl.java Sun Mar 21 21:10:07 2010 @@ -31,6 +31,12 @@ import org.apache.commons.math.MathRunti public class CauchyDistributionImpl extends AbstractContinuousDistribution implements CauchyDistribution, Serializable { + /** + * Default inverse cumulative probability accuracy + * @since 2.1 + */ + public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY = 1e-9; + /** Serializable version identifier */ private static final long serialVersionUID = 8589540077390120676L; @@ -40,6 +46,9 @@ public class CauchyDistributionImpl exte /** The scale of this distribution. */ private double scale = 1; + /** Inverse cumulative probability accuracy */ + private final double solverAbsoluteAccuracy; + /** * Creates cauchy distribution with the medain equal to zero and scale * equal to one. @@ -54,9 +63,22 @@ public class CauchyDistributionImpl exte * @param s scale parameter for this distribution */ public CauchyDistributionImpl(double median, double s){ + this(median, s, DEFAULT_INVERSE_ABSOLUTE_ACCURACY); + } + + /** + * Create a cauchy distribution using the given median and scale. + * @param median median for this distribution + * @param s scale parameter for this distribution + * @param inverseCumAccuracy the maximum absolute error in inverse cumulative probability estimates + * (defaults to {...@link #DEFAULT_INVERSE_ABSOLUTE_ACCURACY}) + * @since 2.1 + */ + public CauchyDistributionImpl(double median, double s, double inverseCumAccuracy) { super(); setMedianInternal(median); setScaleInternal(s); + solverAbsoluteAccuracy = inverseCumAccuracy; } /** @@ -231,4 +253,16 @@ public class CauchyDistributionImpl exte return ret; } + + /** + * Return the absolute accuracy setting of the solver used to estimate + * inverse cumulative probabilities. + * + * @return the solver absolute accuracy + * @since 2.1 + */ + @Override + protected double getSolverAbsoluteAccuracy() { + return solverAbsoluteAccuracy; + } } Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java?rev=925900&r1=925899&r2=925900&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java Sun Mar 21 21:10:07 2010 @@ -29,19 +29,40 @@ import org.apache.commons.math.MathRunti public class ExponentialDistributionImpl extends AbstractContinuousDistribution implements ExponentialDistribution, Serializable { + /** + * Default inverse cumulative probability accuracy + * @since 2.1 + */ + public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY = 1e-9; + /** Serializable version identifier */ private static final long serialVersionUID = 2401296428283614780L; /** The mean of this distribution. */ private double mean; + /** Inverse cumulative probability accuracy */ + private final double solverAbsoluteAccuracy; + /** * Create a exponential distribution with the given mean. * @param mean mean of this distribution. */ public ExponentialDistributionImpl(double mean) { + this(mean, DEFAULT_INVERSE_ABSOLUTE_ACCURACY); + } + + /** + * Create a exponential distribution with the given mean. + * @param mean mean of this distribution. + * @param inverseCumAccuracy the maximum absolute error in inverse cumulative probability estimates + * (defaults to {...@link #DEFAULT_INVERSE_ABSOLUTE_ACCURACY}) + * @since 2.1 + */ + public ExponentialDistributionImpl(double mean, double inverseCumAccuracy) { super(); setMeanInternal(mean); + solverAbsoluteAccuracy = inverseCumAccuracy; } /** @@ -210,4 +231,16 @@ public class ExponentialDistributionImpl return mean; } } + + /** + * Return the absolute accuracy setting of the solver used to estimate + * inverse cumulative probabilities. + * + * @return the solver absolute accuracy + * @since 2.1 + */ + @Override + protected double getSolverAbsoluteAccuracy() { + return solverAbsoluteAccuracy; + } }