Le 10/11/2011 15:43, s...@apache.org a écrit :
> Author: sebb
> Date: Thu Nov 10 14:43:44 2011
> New Revision: 1200350
> 
> URL: http://svn.apache.org/viewvc?rev=1200350&view=rev
> Log:
> Unnecessary casts - angbd is double, so ensures the rest of the calculation 
> uses double
> 
> Modified:
>     
> commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizer.java
> 
> Modified: 
> commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizer.java
> URL: 
> http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizer.java?rev=1200350&r1=1200349&r2=1200350&view=diff
> ==============================================================================
> --- 
> commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizer.java
>  (original)
> +++ 
> commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizer.java
>  Thu Nov 10 14:43:44 2011
> @@ -2149,7 +2149,7 @@ public class BOBYQAOptimizer
>              redsav = ZERO;
>              iu = (int) (angbd * 17. + 3.1);
>              for (int i = 0; i < iu; i++) {
> -                angt = angbd * (double) i / (double) iu;
> +                angt = angbd * i / iu;

I'm not sure about this. It depends on how the compiler performs
associativity. This multiplication can be compiled either as
 (angbd * i) / iu
or as
 angbd * (i / iu)

In the later case, the integer division is wrong.

Luv


>                  sth = (angt + angt) / (ONE + angt * angt);
>                  temp = shs + angt * (angt * dhd - dhs - dhs);
>                  rednew = sth * (angt * dredg - sredg - HALF * sth * temp);
> @@ -2171,7 +2171,7 @@ public class BOBYQAOptimizer
>              }
>              if (isav < iu) {
>                  temp = (rdnext - rdprev) / (redmax + redmax - rdprev - 
> rdnext);
> -                angt = angbd * ((double) isav + HALF * temp) / (double) iu;
> +                angt = angbd * (isav + HALF * temp) / iu;
>              }
>              cth = (ONE - angt * angt) / (ONE + angt * angt);
>              sth = (angt + angt) / (ONE + angt * angt);
> 
> 


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

Reply via email to