svn commit: r251343 - in head/lib/msun: . ld128 ld80 man src
Steve Kargl
sgk at troutmask.apl.washington.edu
Mon Jun 3 19:57:42 UTC 2013
On Mon, Jun 03, 2013 at 07:51:32PM +0000, Steve Kargl wrote:
> Author: kargl
> Date: Mon Jun 3 19:51:32 2013
> New Revision: 251343
> URL: http://svnweb.freebsd.org/changeset/base/251343
>
> Log:
> ld80 and ld128 implementations of expm1l(). This code started life
> as a fairly faithful implementation of the algorithm found in
>
> PTP Tang, "Table-driven implementation of the Expm1 function
> in IEEE floating-point arithmetic," ACM Trans. Math. Soft., 18,
> 211-222 (1992).
>
> Over the last 18-24 months, the code has under gone significant
> optimization and testing.
>
> Reviewed by: bde
> Obtained from: bde (most of the optimizations)
>
For those people that care, here is the data from my last
round of testing expl and expm1l. (Best read in 90+column
window.) These were obtained using GCC in the base system.
expl
Timing:
1M 2M 10M 100M
i386 [-11355.0:11356.0] 0.088302 0.867567 8.64871
amd64 [-11355.0:11356.0] 0.062994 0.631960 6.30295
sparc64 [-11355.0:11356.0] 39.5309 79.1927
Accuracy:
M Max ULP x at Max ULP
i386 [-11355.0:11356.0] 1 0.50465 -3.5510383760383760e+03 -0x1.bbe13a6062b8cdd4p+11
i386 [-11355.0:11356.0] 10 0.50556 -9.6479456830945683e+03 -0x1.2d7f90c24c5c686p+13
i386 [-11355.0:11356.0] 100 0.50654 -7.9982712426427124e+03 -0x1.f3e45702867bb01p+12
amd64 [-11355.0:11356.0] 1 0.50465 -3.5510383760383760e+03 -0x1.bbe13a6062b8cdd4p+11
amd64 [-11355.0:11356.0] 10 0.50556 -9.6479456830945683e+03 -0x1.2d7f90c24c5c686p+13
amd64 [-11355.0:11356.0] 100 0.50654 -7.9982712426427124e+03 -0x1.f3e45702867bb01p+12
sparc64 [-11355.0:11356.0] 1 0.50619 1.79779355979355979355979355979355983e+03
sparc64 {-11355.0:11356.0] 2 0.50541 1.11496704618352309176154588077294027e+04
expm1l
Timing:
1M 10M 100M
i386 [-64.0000:-0.1659] 0.435783 4.342621 43.41397
i386 [ -0.1659: 0.1659] 0.082880 0.829142 8.28948
i386 [ 0.1659:11356.0] 0.110590 1.096098 10.96253
amd64 [-64.0000:-0.1659] 0.066751 0.648734 6.46649
amd64 [ -0.1659: 0.1659] 0.061531 0.614824 6.14377
amd64 [ 0.1659:11356.0] 0.071677 0.716927 7.16819
sparc64 [-113.000:-0.1659] 37.84224
sparc64 [ -0.1659: 0.1659] 66.28533
sparc64 [ 0.1659:11356.0] 41.20714
Accuracy:
M Max ULP x at Max ULP
i386 [-64.0000:-0.1659] 1 0.50824 -1.7579429539429599e-01 -0x1.6806d6ec55bd2cp-3
i386 [ -0.1659: 0.1659] 1 0.50807 1.5765476175476175e-01 0x1.42e07fee5cecaa04p-3
i386 [ 0.1659:11356.0] 1 0.50533 4.6558240641420642e+03 0x1.22fd2f5de1bf8cb2p+12
i386 [-64.0000:-0.1659] 10 0.51163 -1.8666523480652408e-01 -0x1.7e4a57b65a7cp-3
i386 [ -0.1659: 0.1659] 10 0.51031 -1.6139564864956486e-01 -0x1.4a89cd45552be4a8p-3
i386 [ 0.1659:11356.0] 10 0.50597 7.2029609713952472e+03 0x1.c22f60238aafa618p+12
i386 [-64.0000:-0.1659] 100 0.51520 -1.8119337383093434e-01 -0x1.731582f6d89b72p-3
i386 [ -0.1659: 0.1659] 100 0.51161 1.6120475455904754e-01 0x1.4a25b7e6539760ecp-3
i386 [ 0.1659:11356.0] 100 0.50645 1.5581592136564341e+03 0x1.858a308e79dd8494p+10
amd64 [-64.0000:-0.1659] 1 0.50502 -1.8115636515636515e-01 -0x1.73021bbe7877ccp-3
amd64 [ -0.1659: 0.1659] 1 0.50807 1.5765476175476175e-01 0x1.42e07fee5cecaa04p-3
amd64 [ 0.1659:11356.0] 1 0.50522 5.3732636683514684e+03 0x1.4fd437fc4e28bfb6p+12
amd64 [-64.0000:-0.1659] 10 0.51363 -1.7086629347662934e-01 -0x1.5def25b3c452dap-3
amd64 [ -0.1659: 0.1659] 10 0.51031 -1.6139564864956486e-01 -0x1.4a89cd45552be4a8p-3
amd64 [ 0.1659:11356.0] 10 0.50595 2.2495034322503431e-01 0x1.ccb2c3fb0104dbe4p-3
amd64 [-64.0000:-0.1659] 100 0.51376 -2.7335577165055771e-01 -0x1.17ea934da5e086p-2
amd64 [ -0.1659: 0.1659] 100 0.51161 1.6120475455904754e-01 0x1.4a25b7e6539760ecp-3
amd64 [ 0.1659:11356.0] 100 0.50662 3.9436528827225188e+02 0x1.8a5d83883eef2676p+8
sparc64 [-113.000:-0.1659] 1 0.50339 -4.89331501511501510727132103685011835e+00
sparc64 [ -0.1659:0.1659] 1 0.50837 -1.28120218820218813976976441251060453e-01
sparc64 [ 0.1659:11356.] 1 0.50514 6.45515777662077662077313264157127259e+03
--
steve
More information about the svn-src-all
mailing list