Java Math.cos() Method Does Not Return 0 When Expected
Posted
by dimo414
on Stack Overflow
See other posts from Stack Overflow
or by dimo414
Published on 2010-02-10T09:31:48Z
Indexed on
2010/03/12
6:57 UTC
Read the original article
Hit count: 325
Using Java on a Windows 7 PC (not sure if that matters) and calling Math.cos() on values that should return 0 (like pi/2) instead returns small values, but small values that, unless I'm misunderstanding, are much greater than 1 ulp off from zero.
Math.cos(Math.PI/2) = 6.123233995736766E-17
Math.ulp(Math.cos(Math.PI/2)) = 1.232595164407831E-32
Is this in fact within 1 ulp and I'm simply confused? And would this be an acceptable wrapper method to resolve this minor inaccuracy?
public static double cos(double a){
double temp = Math.abs(a % Math.PI);
if(temp == Math.PI/2)
return 0;
return Math.cos(a);
}
© Stack Overflow or respective owner