Hacker News new | ask | show | jobs
by adgjlsfhk1 1540 days ago
No. The fsin instruction is inaccurate enough to be useless. It gives 0 correct digits when the output is close to 0.
1 comments

> 0 correct digits when the output is close to 0

this is an amusing way to describe the precision of sub-normal floating point numbers

It's not just sub-normal numbers. As https://randomascii.wordpress.com/2014/10/09/intel-underesti... shows, fsin only uses 66 bits of pi, which means you have roughly no precision whenever abs(sin(x))<10^-16 which is way bigger than the biggest subnormal (10^-307 or so)
In that range, just returning x would be way better. Maybe even perfect actually - if x is less than 10^-16, then the error of x^3/6 is less than the machine precision for x.
the error isn't when x is small. it's when sin(x) is small. the problem happens for x near multiples of pi
It is much more amusing if you describe it in ulps; for some inputs the error can reach > 2^90 ulps, more than the mantissa size itself.