commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luc Maisonobe <Luc.Maison...@free.fr>
Subject Re: svn commit: r1042596 - in /commons/proper/math/trunk/src/main/java/org/apache/commons/math: analysis/solvers/ distribution/
Date Mon, 06 Dec 2010 19:29:48 GMT
Hi,

Le 06/12/2010 12:56, erans@apache.org a écrit :
> Author: erans
> Date: Mon Dec  6 11:56:26 2010
> New Revision: 1042596
> 
> URL: http://svn.apache.org/viewvc?rev=1042596&view=rev
> Log:
> MATH-452
> Made all static variables (accuracies) "private".


We have already started a discussion on a similar point some months ago.
Last message is here: <http://markmail.org/message/m4l7v4pdfp5yn3as>,
but we did not really conclude.

To summarize my point from a few months ago, one use case for these
public values is that a use program can do something like this to first
initialize a Graphical User Interface, then let the user change the
values he wants, and later retrieve the actual values (which may be
unchanged) to build the solver.

// initialize GUI
solverGui.setRelAccuracy(BaseAbstractUnivariateRealSolver.DEFAULT_RELATIVE_ACCURACY);
solverGui.setAbsAccuracy(BaseAbstractUnivariateRealSolver.DEFAULT_ABSOLUTE_ACCURACY);

// fire the GUI
...

// in the action callback from the GUI OK button, create the solver
double rel = solverGui.getRelAccuracy();
double abs = solverGui.getAbsAccuracy();
BrentSolver mySolver = new BrentSolver(rel, abs);


Another simpler use case is simply to have the default value available
in the Javadoc without being forced to get commons-math sources.

So I still consider this kind of public constats are usefule. Despite
the fact within commons-math they are used only in some constructors,
the fact they are public allow them to be also used in user code.

Luc

> 
> Modified:
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BaseAbstractUnivariateRealSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BisectionSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BrentSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/LaguerreSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver2.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/NewtonSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/RiddersSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/SecantSolver.java
>     commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/AbstractContinuousDistribution.java
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BaseAbstractUnivariateRealSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BaseAbstractUnivariateRealSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BaseAbstractUnivariateRealSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BaseAbstractUnivariateRealSolver.java
Mon Dec  6 11:56:26 2010
> @@ -34,12 +34,10 @@ import org.apache.commons.math.analysis.
>   */
>  public abstract class BaseAbstractUnivariateRealSolver<FUNC extends UnivariateRealFunction>
>      implements BaseUnivariateRealSolver<FUNC> {
> -    /** Default absolute accuracy */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>      /** Default relative accuracy. */
> -    public static final double DEFAULT_RELATIVE_ACCURACY = 1e-14;
> +    private static final double DEFAULT_RELATIVE_ACCURACY = 1e-14;
>      /** Default function value accuracy. */
> -    public static final double DEFAULT_FUNCTION_VALUE_ACCURACY = 1e-15;
> +    private static final double DEFAULT_FUNCTION_VALUE_ACCURACY = 1e-15;
>      /** Function value accuracy. */
>      private final double functionValueAccuracy;
>      /** Absolute accuracy. */
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BisectionSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BisectionSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BisectionSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BisectionSolver.java
Mon Dec  6 11:56:26 2010
> @@ -28,10 +28,10 @@ import org.apache.commons.math.util.Fast
>   */
>  public class BisectionSolver extends AbstractUnivariateRealSolver {
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
> -     * Construct a solver with default accuracy.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public BisectionSolver() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BrentSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BrentSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BrentSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BrentSolver.java
Mon Dec  6 11:56:26 2010
> @@ -37,10 +37,10 @@ public class BrentSolver extends Abstrac
>      /** Serializable version identifier */
>      private static final long serialVersionUID = 7694577816772532779L;
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
> -     * Construct a solver with default accuracies.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public BrentSolver() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/LaguerreSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/LaguerreSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/LaguerreSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/LaguerreSolver.java
Mon Dec  6 11:56:26 2010
> @@ -40,12 +40,12 @@ import org.apache.commons.math.util.Fast
>   */
>  public class LaguerreSolver extends AbstractPolynomialSolver {
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>      /** Complex solver. */
>      protected ComplexSolver complexSolver = new ComplexSolver();
>  
>      /**
> -     * Construct a solver with default accuracies.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public LaguerreSolver() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver.java
Mon Dec  6 11:56:26 2010
> @@ -49,10 +49,10 @@ public class MullerSolver extends Abstra
>      /** Serializable version identifier */
>      private static final long serialVersionUID = 7694577816772532779L;
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
> -     * Construct a solver with default accuracies.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public MullerSolver() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver2.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver2.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver2.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/MullerSolver2.java
Mon Dec  6 11:56:26 2010
> @@ -49,10 +49,10 @@ public class MullerSolver2 extends Abstr
>      /** Serializable version identifier */
>      private static final long serialVersionUID = 7694577816772532779L;
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
> -     * Construct a solver with default accuracies.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public MullerSolver2() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/NewtonSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/NewtonSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/NewtonSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/NewtonSolver.java
Mon Dec  6 11:56:26 2010
> @@ -30,7 +30,7 @@ import org.apache.commons.math.util.Fast
>   */
>  public class NewtonSolver extends AbstractDifferentiableUnivariateRealSolver {
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
>       * Construct a solver.
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/RiddersSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/RiddersSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/RiddersSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/RiddersSolver.java
Mon Dec  6 11:56:26 2010
> @@ -33,10 +33,10 @@ import org.apache.commons.math.util.Math
>   */
>  public class RiddersSolver extends AbstractUnivariateRealSolver {
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
> -     * Construct a solver with default accuracy.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public RiddersSolver() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/SecantSolver.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/SecantSolver.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/SecantSolver.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/SecantSolver.java
Mon Dec  6 11:56:26 2010
> @@ -38,10 +38,10 @@ import org.apache.commons.math.util.Fast
>   */
>  public class SecantSolver extends AbstractUnivariateRealSolver {
>      /** Default absolute accuracy. */
> -    public static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
> +    private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>  
>      /**
> -     * Construct a solver with default accuracy.
> +     * Construct a solver with default accuracy (1e-6).
>       */
>      public SecantSolver() {
>          this(DEFAULT_ABSOLUTE_ACCURACY);
> 
> Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/AbstractContinuousDistribution.java
> URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/AbstractContinuousDistribution.java?rev=1042596&r1=1042595&r2=1042596&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/AbstractContinuousDistribution.java
(original)
> +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/AbstractContinuousDistribution.java
Mon Dec  6 11:56:26 2010
> @@ -42,16 +42,18 @@ public abstract class AbstractContinuous
>      implements ContinuousDistribution, Serializable {
>      /** Serializable version identifier */
>      private static final long serialVersionUID = -38038050983108802L;
> +    /** Default accuracy. */
> +    public static final double SOLVER_DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
>      /**
>       * RandomData instance used to generate samples from the distribution
>       * @since 2.2
>       */
>      protected final RandomDataImpl randomData = new RandomDataImpl();
>      /**
> -     * Solver absolute accuracy for inverse cumulative computation
> +     * Solver absolute accuracy for inverse cumulative computation.
>       * @since 2.1
>       */
> -    private double solverAbsoluteAccuracy = BrentSolver.DEFAULT_ABSOLUTE_ACCURACY;
> +    private double solverAbsoluteAccuracy = SOLVER_DEFAULT_ABSOLUTE_ACCURACY;
>      /**
>       * Default constructor.
>       */
> @@ -125,7 +127,7 @@ public abstract class AbstractContinuous
>          // find root
>          double root = UnivariateRealSolverUtils.solve(rootFindingFunction,
>                  // override getSolverAbsoluteAccuracy() to use a Brent solver with
> -                // absolute accuracy different from BrentSolver default
> +                // absolute accuracy different from the default.
>                  bracket[0],bracket[1], getSolverAbsoluteAccuracy());
>          return root;
>      }
> @@ -209,6 +211,8 @@ public abstract class AbstractContinuous
>  
>      /**
>       * Returns the solver absolute accuracy for inverse cumulative computation.
> +     * You can override this method in order to use a Brent solver with an
> +     * absolute accuracy different from the default.
>       *
>       * @return the maximum absolute error in inverse cumulative probability estimates
>       * @since 2.1
> @@ -216,5 +220,4 @@ public abstract class AbstractContinuous
>      protected double getSolverAbsoluteAccuracy() {
>          return solverAbsoluteAccuracy;
>      }
> -
>  }
> 
> 
> 


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


Mime
View raw message