Implementation of half-cycle trignometric functions

Steve Kargl sgk at troutmask.apl.washington.edu
Wed May 17 18:09:34 UTC 2017


On Wed, May 17, 2017 at 12:49:45PM +1000, Bruce Evans wrote:
> On Tue, 16 May 2017, Steve Kargl wrote:
> 
> > Index: lib/msun/ld128/s_cospil.c
> > ...
> > +static const long double
> > +pihi = 3.14159265358979322702026593105983920e+00L,
> > +pilo = 1.14423774522196636802434264184180742e-17L;
> 
> These are not in normal format, and are hard to read.  I can't see if
> pihi has the correct number of zero bits for exact multiplication.

I don't have access to an ld128 system with suitable 
facilities to allow me to spit out the hex representation.
As such, I've added a comment

/*
 * pi_hi contains the leading 56 bits of a 169 bit approximation for pi.
 */

> 
> These don't have the normal spelling.  fdlibm never uses pihi or pio2hi,
> or pi_hi.  It often uses pio2_hi and other pio2_*.  My s_sinpi.c uses
> pi_hi.

fdlibm has no convention.  For example, e_log10.c actually uses
a mixature of convensions.

static const double
two54      =  1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
ivln10hi   =  4.34294481878168880939e-01, /* 0x3fdbcb7b, 0x15200000 */
ivln10lo   =  2.50829467116452752298e-11, /* 0x3dbb9438, 0xca9aadd5 */
log10_2hi  =  3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */
log10_2lo  =  3.69423907715893078616e-13; /* 0x3D59FEF3, 0x11F12B36 */

and 

        double f,hfsq,hi,lo,r,val_hi,val_lo,w,y,y2;

-- 
Steve
20170425 https://www.youtube.com/watch?v=VWUpyCsUKR4
20161221 https://www.youtube.com/watch?v=IbCHE-hONow


More information about the freebsd-numerics mailing list