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;
+    }
 }


Reply via email to