Re: [libm] Implementations for rsqrt[fl].

Paul Zimmermann <[email protected]>
Newsgroups gmane.os.freebsd.devel.hackers
Message-ID <p9u07bpecunv.fsf@thym>
       Hi Steve,

I'll try to exercise your code when I return from vacation.

> Date: Thu, 7 May 2026 16:05:16 -0700
> From: Steve Kargl <[email protected]>
> 
> All,
> 
> I submitted https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=295089
> which contains an implementation of rsqrt[fl](x)=1/sqrt[fl](x).  These
> appear in C23 7.12.7.9 and F.10.4.9 as well as IEEE-754 2008.  Under
> IEEE-754, the functions are required(?)/recommended to be correctly
> rounded in all rounding modes.  I have only checked round-to-nearest.
> Using my testing franework, I see
> 
> % ./tlibm rsqrt -fPED -x 0x1p-127 -X 0x1p126 -s 0
> Interval tested for rsqrtf: [5.87747e-39,8.50706e+37]
> 1000000 calls, 0.011062 secs, 0.01106 usecs/call
>         ulp <= 0.5: 100.000% 2118123393 | 100.000% 2118123393
> 0.5 <  ulp <  0.6:  0.000%     127 | 100.000% 2118123520

what does this 127 mean?

> Max ulp: 0.500000 at 1.17549421e-38
> %./tlibm rsqrt -fa  1.17549421e-38
>     x =  1.17549421e-38f, /* 0x007fffff */
> libm =  9.22337204e+18f, /* 0x5f000000 */
> mpfr =  9.22337314e+18f, /* 0x5f000001 */
>   ULP = 0.50000

it seems libm is not correctly rounded in this example.
Do you plan to fix that?

Side remark: the ULP value should be rounded up to 0.50001.

Paul

> %./tlibm rsqrt -dP -x 0 -X 0x1p1001 -N700 -s 0
> Interval tested for rsqrt: [0,2.14302e+301]
> 700000000 calls, 9.325613 secs, 0.01332 usecs/call
>         ulp <= 0.5: 100.000% 699999999 | 100.000% 699999999
> Max ulp: 0.500000 at 1.2611313594916888e+301
> 
> % ./tlibm rsqrt -lP -x 0 -X 0x1p16380 -N700 -s 0
> Interval tested for rsqrtl: [0,7.43582e+4930]
> 700000000 calls, 53.109852 secs, 0.07587 usecs/call
>         ulp <= 0.5: 100.000% 699999999 | 100.000% 699999999
> Max ulp: 0.500000 at 6.157706927493729414081e+4930
> 
> If a committer wants to pick up the diff and apply it
> to src/  I can answer any questions you may have.
> -- 
> steve
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.