Author: luc
Date: Tue Feb 23 21:09:25 2010
New Revision: 915522

URL: http://svn.apache.org/viewvc?rev=915522&view=rev
Log:
Fixed wrong return values when enpoints are roots in Brent solver with a user 
provided initial guess
JIRA: MATH-344

Modified:
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/solvers/BrentSolver.java
    commons/proper/math/trunk/src/site/xdoc/changes.xml
    
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/solvers/BrentSolverTest.java

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=915522&r1=915521&r2=915522&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
 Tue Feb 23 21:09:25 2010
@@ -112,7 +112,7 @@
         // return the first endpoint if it is good enough
         double yMin = f.value(min);
         if (Math.abs(yMin) <= functionValueAccuracy) {
-            setResult(yMin, 0);
+            setResult(min, 0);
             return result;
         }
 
@@ -124,7 +124,7 @@
         // return the second endpoint if it is good enough
         double yMax = f.value(max);
         if (Math.abs(yMax) <= functionValueAccuracy) {
-            setResult(yMax, 0);
+            setResult(max, 0);
             return result;
         }
 

Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=915522&r1=915521&r2=915522&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Tue Feb 23 21:09:25 2010
@@ -39,6 +39,10 @@
   </properties>
   <body>
     <release version="2.1" date="TBD" description="TBD">
+      <action dev="luc" type="fix" issue="MATH-344" >
+        Fixed wrong return values when enpoints are roots in Brent solver with
+        a user provided initial guess
+      </action>
       <action dev="luc" type="fix" issue="MATH-343" >
         Fixed a missing bracketing check of initial interval in Brent solver.
       </action>

Modified: 
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/solvers/BrentSolverTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/solvers/BrentSolverTest.java?rev=915522&r1=915521&r2=915522&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/solvers/BrentSolverTest.java
 (original)
+++ 
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/solvers/BrentSolverTest.java
 Tue Feb 23 21:09:25 2010
@@ -308,10 +308,17 @@
 
         // endpoint is root
         double result = solver.solve(f, Math.PI, 4);
-        assertEquals(result, Math.PI, solver.getAbsoluteAccuracy());
+        assertEquals(Math.PI, result, solver.getAbsoluteAccuracy());
 
         result = solver.solve(f, 3, Math.PI);
-        assertEquals(result, Math.PI, solver.getAbsoluteAccuracy());
+        assertEquals(Math.PI, result, solver.getAbsoluteAccuracy());
+
+        result = solver.solve(f, Math.PI, 4, 3.5);
+        assertEquals(Math.PI, result, solver.getAbsoluteAccuracy());
+
+        result = solver.solve(f, 3, Math.PI, 3.07);
+        assertEquals(Math.PI, result, solver.getAbsoluteAccuracy());
+
     }
 
     public void testBadEndpoints() throws Exception {


Reply via email to