commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark R. Diggory" <mdigg...@latte.harvard.edu>
Subject Re: cvs commit: jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat StatUtils.java
Date Wed, 18 Jun 2003 11:51:55 GMT


Al Chou wrote:
>>        * @param values Is a double[] containing the values
>>        * @return the result, Double.NaN if no values for an empty array 
>>        * or 0.0 for a single value set.  
>>  @@ -168,10 +175,12 @@
>>   		} else if (values.length > 1) {
>>   			double mean = mean(values);
>>   			double accum = 0.0;
>>  +            double accum2 = 0.0;
>>   			for (int i = 0; i < values.length; i++) {
>>   				accum += Math.pow((values[i] - mean), 2.0);
>>  +                accum2 += (values[i] - mean);
>>   			}
>>  -			variance = accum / (double)(values.length - 1);
>>  +			variance = (accum - (Math.pow(accum2,2)/(double)values.length)) /
>>(double)(values.length - 1);
> 
> 
> Maybe I'm displaying my old Fortran programmer's bias or premature optimization
> without first profiling, but is there a good reason to call Math.pow for the
> square in this line rather than do a multiplication?  I can kind of see why you
> wouldn't want to introduce a new variable in the "accum +=" line above this
> one, but I don't see the need to do a function call for a square on this line.
> 

Shamefully, I've never programmed Fortran, so you have a unique 
perspective over me. We've gone back and forth on this subject before. 
In this case its probably fine to do either x*x or Math.pow(x,2).

One also has to take into consideration that the Math/StrictMath.pow 
method is actually a native method and is thus also actually implemented 
in the native binary portion of the JVM. This is quite efficient and 
optimized from what I understand, but I'm no expert on this subject and 
this is just speculation. I tend to use the Math static library more 
from a moral standpoint, if we're building the same sort of static 
library, then its respectable for us to use the java Math library 
internally for consistency. But, thats just an opinion.

-Mark


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


Mime
View raw message