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