Author: brentworden Date: Thu Jun 7 06:55:36 2007 New Revision: 545184 URL: http://svn.apache.org/viewvc?view=rev&rev=545184 Log: Removed dependency on DistributionFactory. Added settable normal distribution field.
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/distribution/PoissonDistributionImpl.java Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/distribution/PoissonDistributionImpl.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/distribution/PoissonDistributionImpl.java?view=diff&rev=545184&r1=545183&r2=545184 ============================================================================== --- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/distribution/PoissonDistributionImpl.java (original) +++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/distribution/PoissonDistributionImpl.java Thu Jun 7 06:55:36 2007 @@ -33,6 +33,8 @@ /** Serializable version identifier */ private static final long serialVersionUID = -3349935121172596109L; + private NormalDistribution normal; + /** * Holds the Poisson mean for the distribution. */ @@ -47,7 +49,22 @@ * @throws IllegalArgumentException if p ≤ 0 */ public PoissonDistributionImpl(double p) { + this(p, new NormalDistributionImpl()); + } + + /** + * Create a new Poisson distribution with the given the mean. + * The mean value must be positive; otherwise an + * <code>IllegalArgument</code> is thrown. + * + * @param p the Poisson mean + * @param z a normal distribution used to compute normal approximations. + * @throws IllegalArgumentException if p ≤ 0 + * @since 1.2 + */ + public PoissonDistributionImpl(double p, NormalDistribution z) { super(); + setNormal(z); setMean(p); } @@ -74,6 +91,8 @@ "The Poisson mean must be positive"); } this.mean = p; + normal.setMean(p); + normal.setStandardDeviation(Math.sqrt(p)); } /** @@ -122,10 +141,6 @@ * @throws MathException if an error occurs computing the normal approximation */ public double normalApproximateProbability(int x) throws MathException { - NormalDistribution normal = DistributionFactory.newInstance() - .createNormalDistribution(getMean(), - Math.sqrt(getMean())); - // calculate the probability using half-correction return normal.cumulativeProbability(x + 0.5); } @@ -152,6 +167,17 @@ */ protected int getDomainUpperBound(double p) { return Integer.MAX_VALUE; + } + + /** + * Modify the normal distribution used to compute normal approximations. + * The caller is responsible for insuring the normal distribution has the + * proper parameter settings. + * @param value the new distribution + * @since 1.2 + */ + public void setNormal(NormalDistribution value) { + normal = value; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]