You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by md...@apache.org on 2003/07/05 20:04:42 UTC

cvs commit: jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/distribution AbstractContinuousDistribution.java

mdiggory    2003/07/05 11:04:42

  Modified:    math/src/java/org/apache/commons/math/stat/distribution
                        AbstractContinuousDistribution.java
  Log:
  PR: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21313
  Submitted by:	brent@worden.org
  
  Revision  Changes    Path
  1.6       +29 -12    jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/distribution/AbstractContinuousDistribution.java
  
  Index: AbstractContinuousDistribution.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/distribution/AbstractContinuousDistribution.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractContinuousDistribution.java	22 Jun 2003 03:57:57 -0000	1.5
  +++ AbstractContinuousDistribution.java	5 Jul 2003 18:04:42 -0000	1.6
  @@ -53,8 +53,10 @@
    */
   package org.apache.commons.math.stat.distribution;
   
  +import org.apache.commons.math.MathException;
   import org.apache.commons.math.analysis.RootFinding;
  -import org.apache.commons.math.analysis.UnivariateFunction;
  +import org.apache.commons.math.analysis.UnivariateRealFunction;
  +import org.apache.commons.math.analysis.UnivariateRealSolverFactory;
   
   /**
    * Base class for various continuous distributions.  It provides default
  @@ -101,22 +103,37 @@
           
           // by default, do simple root finding using bracketing and bisection.
           // subclasses can overide if there is a better method.
  -        UnivariateFunction rootFindingFunction = new UnivariateFunction() {
  -            public double evaluate(double x) {
  +        UnivariateRealFunction rootFindingFunction =
  +            new UnivariateRealFunction() {
  +                
  +            public double value(double x) throws MathException {
                   return cummulativeProbability(x) - p;
               }
  +
  +            public double firstDerivative(double x) throws MathException {
  +                return 0;
  +            }
  +
  +            public double secondDerivative(double x) throws MathException {
  +                return 0;
  +            }
           };
           
  -        // bracket root
  -        double[] bracket = RootFinding.bracket(rootFindingFunction,
  -            getInitialDomain(p), getDomainLowerBound(p),
  -            getDomainUpperBound(p));
  -        
  -        // find root
  -        double root = RootFinding.bisection(rootFindingFunction, bracket[0],
  -            bracket[1]);
  +        try {
  +            // bracket root
  +            double[] bracket = RootFinding.bracket(rootFindingFunction,
  +                getInitialDomain(p), getDomainLowerBound(p),
  +                getDomainUpperBound(p));
  +            
  +            // find root
  +            double root = UnivariateRealSolverFactory.solve(
  +                rootFindingFunction, bracket[0], bracket[1]);
           
  -        return root;
  +            return root;
  +        } catch (MathException ex) {
  +            // this should never happen.
  +            return Double.NaN;
  +        }
       }
       
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org