You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Mick (JIRA)" <ji...@apache.org> on 2008/05/06 22:34:57 UTC

[jira] Created: (MATH-204) BrentSolver throws IllegalArgumentException

BrentSolver throws IllegalArgumentException 
--------------------------------------------

                 Key: MATH-204
                 URL: https://issues.apache.org/jira/browse/MATH-204
             Project: Commons Math
          Issue Type: Bug
    Affects Versions: 1.2
         Environment: Win XP
            Reporter: Mick
            Priority: Minor


I am getting this exception:

java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)

The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (MATH-204) BrentSolver throws IllegalArgumentException

Posted by "Mick (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MATH-204?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mick updated MATH-204:
----------------------

    Description: 
I am getting this exception:

java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)

The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.

The problem comes from this method:
    public double solve(double min, double max) throws MaxIterationsExceededException, 
        FunctionEvaluationException {
        
        clearResult();
        verifyInterval(min, max);
        
        double yMin = f.value(min);
        double yMax = f.value(max);
        
        // Verify bracketing
        if (yMin * yMax >= 0) {
            throw new IllegalArgumentException
            ("Function values at endpoints do not have different signs." +
                    "  Endpoints: [" + min + "," + max + "]" + 
                    "  Values: [" + yMin + "," + yMax + "]");       
        }

        // solve using only the first endpoint as initial guess
        return solve(min, yMin, max, yMax, min, yMin);

    }


  was:
I am getting this exception:

java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)

The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.




> BrentSolver throws IllegalArgumentException 
> --------------------------------------------
>
>                 Key: MATH-204
>                 URL: https://issues.apache.org/jira/browse/MATH-204
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Win XP
>            Reporter: Mick
>            Priority: Minor
>
> I am getting this exception:
> java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
> at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
> at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)
> The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
> According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.
> The problem comes from this method:
>     public double solve(double min, double max) throws MaxIterationsExceededException, 
>         FunctionEvaluationException {
>         
>         clearResult();
>         verifyInterval(min, max);
>         
>         double yMin = f.value(min);
>         double yMax = f.value(max);
>         
>         // Verify bracketing
>         if (yMin * yMax >= 0) {
>             throw new IllegalArgumentException
>             ("Function values at endpoints do not have different signs." +
>                     "  Endpoints: [" + min + "," + max + "]" + 
>                     "  Values: [" + yMin + "," + yMax + "]");       
>         }
>         // solve using only the first endpoint as initial guess
>         return solve(min, yMin, max, yMax, min, yMin);
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (MATH-204) BrentSolver throws IllegalArgumentException

Posted by "Brent Worden (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MATH-204?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brent Worden resolved MATH-204.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 1.3

SVN 654100.  added root checks for the endpoints.

> BrentSolver throws IllegalArgumentException 
> --------------------------------------------
>
>                 Key: MATH-204
>                 URL: https://issues.apache.org/jira/browse/MATH-204
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Win XP
>            Reporter: Mick
>            Assignee: Brent Worden
>            Priority: Minor
>             Fix For: 1.3
>
>
> I am getting this exception:
> java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
> at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
> at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)
> The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
> According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.
> The problem comes from this method:
>     public double solve(double min, double max) throws MaxIterationsExceededException, 
>         FunctionEvaluationException {
>         
>         clearResult();
>         verifyInterval(min, max);
>         
>         double yMin = f.value(min);
>         double yMax = f.value(max);
>         
>         // Verify bracketing
>         if (yMin * yMax >= 0) {
>             throw new IllegalArgumentException
>             ("Function values at endpoints do not have different signs." +
>                     "  Endpoints: [" + min + "," + max + "]" + 
>                     "  Values: [" + yMin + "," + yMax + "]");       
>         }
>         // solve using only the first endpoint as initial guess
>         return solve(min, yMin, max, yMax, min, yMin);
>     }
> One way to fix it would be to add this code after the assignment of yMin and yMax:
>         if (yMin ==0 || yMax == 0) {
>         	return 0;
>        	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (MATH-204) BrentSolver throws IllegalArgumentException

Posted by "Mick (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MATH-204?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mick updated MATH-204:
----------------------

    Description: 
I am getting this exception:

java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)

The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.

The problem comes from this method:
    public double solve(double min, double max) throws MaxIterationsExceededException, 
        FunctionEvaluationException {
        
        clearResult();
        verifyInterval(min, max);
        
        double yMin = f.value(min);
        double yMax = f.value(max);
        
        // Verify bracketing
        if (yMin * yMax >= 0) {
            throw new IllegalArgumentException
            ("Function values at endpoints do not have different signs." +
                    "  Endpoints: [" + min + "," + max + "]" + 
                    "  Values: [" + yMin + "," + yMax + "]");       
        }

        // solve using only the first endpoint as initial guess
        return solve(min, yMin, max, yMax, min, yMin);

    }

One way to fix it would be to add this code after the assignment of yMin and yMax:
        if (yMin ==0 || yMax == 0) {
        	return 0;
       	}


  was:
I am getting this exception:

java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)

The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.

The problem comes from this method:
    public double solve(double min, double max) throws MaxIterationsExceededException, 
        FunctionEvaluationException {
        
        clearResult();
        verifyInterval(min, max);
        
        double yMin = f.value(min);
        double yMax = f.value(max);
        
        // Verify bracketing
        if (yMin * yMax >= 0) {
            throw new IllegalArgumentException
            ("Function values at endpoints do not have different signs." +
                    "  Endpoints: [" + min + "," + max + "]" + 
                    "  Values: [" + yMin + "," + yMax + "]");       
        }

        // solve using only the first endpoint as initial guess
        return solve(min, yMin, max, yMax, min, yMin);

    }



> BrentSolver throws IllegalArgumentException 
> --------------------------------------------
>
>                 Key: MATH-204
>                 URL: https://issues.apache.org/jira/browse/MATH-204
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Win XP
>            Reporter: Mick
>            Priority: Minor
>
> I am getting this exception:
> java.lang.IllegalArgumentException: Function values at endpoints do not have different signs.  Endpoints: [-100000.0,1.7976931348623157E308]  Values: [0.0,-101945.04630982173]
> at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:99)
> at org.apache.commons.math.analysis.BrentSolver.solve(BrentSolver.java:62)
> The exception should not be thrown with values  [0.0,-101945.04630982173] because 0.0 is positive.
> According to Brent Worden, the algorithm should stop and return 0 as the root instead of throwing an exception.
> The problem comes from this method:
>     public double solve(double min, double max) throws MaxIterationsExceededException, 
>         FunctionEvaluationException {
>         
>         clearResult();
>         verifyInterval(min, max);
>         
>         double yMin = f.value(min);
>         double yMax = f.value(max);
>         
>         // Verify bracketing
>         if (yMin * yMax >= 0) {
>             throw new IllegalArgumentException
>             ("Function values at endpoints do not have different signs." +
>                     "  Endpoints: [" + min + "," + max + "]" + 
>                     "  Values: [" + yMin + "," + yMax + "]");       
>         }
>         // solve using only the first endpoint as initial guess
>         return solve(min, yMin, max, yMax, min, yMin);
>     }
> One way to fix it would be to add this code after the assignment of yMin and yMax:
>         if (yMin ==0 || yMax == 0) {
>         	return 0;
>        	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.