commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: svn commit: r1200350 - /commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizer.java
Date Thu, 10 Nov 2011 18:30:55 GMT
On 10 November 2011 17:15, Luc Maisonobe <Luc.Maisonobe@free.fr> wrote:
> Le 10/11/2011 15:43, sebb@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.

http://introcs.cs.princeton.edu/java/11precedence/

says * and / have equal precedence, so * is done first.


> 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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

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


Mime
View raw message