[Mesa-dev] Precision of float and trigonometric functions on i965

Petri Latvala petri.latvala at intel.com
Thu Dec 11 03:20:37 PST 2014


On 12/11/2014 11:59 AM, Iago Toral wrote:
> That said, I also noticed that most of the errors reported are for
> fairly big numbers, so I played a bit with some examples and noticed
> that trigonometric functions lose more precision as their argument gets
> bigger. If I pass arguments of a few thousand radians to sin() or cos()
> I usually get results that are off by >0.1 and for many values over
> 15000 radians I get completely bogus results, off by more than 0.5 of
> even 1.0 in some cases. Some examples:
>
> Angle in radians   | sin() result | Expected     |  Error   |
> 13000.0            | 0.05308(...) | 0.08947(...) | ~ 0.036  |
> 14000.0            | 0.85559(...) | 0.87388(...) | ~ 0.018  |
> 15000.0            | 0.00018(...) | 0.89324(...) | ~ 0.893  |
> 16000.0            | 0.82698(...) | 0.13100(...) | ~ 0.696  |
> 24500.0            | 0.00000(...) | 0.95833(...) | ~ 0.958  |
>
> I suppose this is a known issue, right? Also, considering that sin() is
> implemented as a single Math hardware instruction I imagine there is
> little that software can do to correct this in any case...
>

According to the hw specs, sin and cos absolute error is <= 0.0008, but 
only for the range of +/- 100 * pi.


-- 
Petri Latvala



More information about the mesa-dev mailing list