[PATCH 2/6] Remove slow paths from sin/cos
Wilco Dijkstra
Wilco.Dijkstra@arm.com
Mon Mar 12 21:13:00 GMT 2018
Joseph Myers wrote:
> On Mon, 12 Mar 2018, Wilco Dijkstra wrote:
>
>> Though these patches keep the ULP accuracy across the full range as is,
>> we could agree on higher ULP errors for large/huge range reduction cases
>> in the future. The main complexity is for certain rare inputs which happen to
>> be extremely close to an integer multiple of PI/2, and those few cases mean
>> you need significant extra work to guarantee 0.5 ULP error bound on range
>> reduction.
>
> I don't think the work for having an error bound not much more than 0.5ulp
> on the final result of sin/cos for large arguments is significantly
> different from the work for having an error bound of say 3ulp (the
> testsuite has a global maximum of 9ulp (16ulp for IBM long double) beyond
> which it will not accept errors even if those large errors are listed in
> libm-test-ulps files - that bound is simply based on the errors
> empirically observed at present, for functions other than Bessel functions
> and cpow which are known to have cases with much larger errors).
Having to do another reduction step can increase latency significantly. To give
an example, I had to increase accuracy of the first-level range reduction because
a handful huge multiples of PI (6-7 digits) had 2-3ULP reduction error. The additional
accuracy means range reduction became 50% slower while being way too accurate
for almost all inputs.
Obviously it would be possible redesign it from scratch using a much smaller input
range and FMA when available etc.
Wilco
More information about the Libc-alpha
mailing list