13a8617a8SJordan K. Hubbard /* k_sinf.c -- float version of k_sin.c 23a8617a8SJordan K. Hubbard * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. 311dc2417SBruce Evans * Optimized by Bruce D. Evans. 43a8617a8SJordan K. Hubbard */ 53a8617a8SJordan K. Hubbard 63a8617a8SJordan K. Hubbard /* 73a8617a8SJordan K. Hubbard * ==================================================== 83a8617a8SJordan K. Hubbard * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 93a8617a8SJordan K. Hubbard * 103a8617a8SJordan K. Hubbard * Developed at SunPro, a Sun Microsystems, Inc. business. 113a8617a8SJordan K. Hubbard * Permission to use, copy, modify, and distribute this 123a8617a8SJordan K. Hubbard * software is freely granted, provided that this notice 133a8617a8SJordan K. Hubbard * is preserved. 143a8617a8SJordan K. Hubbard * ==================================================== 153a8617a8SJordan K. Hubbard */ 163a8617a8SJordan K. Hubbard 1759aad933SBruce Evans #ifndef INLINE_KERNEL_SINDF 183a8617a8SJordan K. Hubbard #ifndef lint 197f3dea24SPeter Wemm static char rcsid[] = "$FreeBSD$"; 203a8617a8SJordan K. Hubbard #endif 214ce51209SBruce Evans #endif 223a8617a8SJordan K. Hubbard 233a8617a8SJordan K. Hubbard #include "math.h" 243a8617a8SJordan K. Hubbard #include "math_private.h" 253a8617a8SJordan K. Hubbard 2659aad933SBruce Evans /* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */ 2759aad933SBruce Evans static const double 2859aad933SBruce Evans S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */ 2959aad933SBruce Evans S2 = 0x111110896efbb2.0p-59, /* 0.0083333293858894631756 */ 3059aad933SBruce Evans S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */ 3159aad933SBruce Evans S4 = 0x16cd878c3b46a7.0p-71; /* 0.0000027183114939898219064 */ 323a8617a8SJordan K. Hubbard 3359aad933SBruce Evans #ifdef INLINE_KERNEL_SINDF 344ce51209SBruce Evans extern inline 354ce51209SBruce Evans #endif 3659b19ff1SAlfred Perlstein float 3759aad933SBruce Evans __kernel_sindf(double x) 383a8617a8SJordan K. Hubbard { 3959aad933SBruce Evans double z,r,v; 404339c67cSBruce Evans 413a8617a8SJordan K. Hubbard z = x*x; 423a8617a8SJordan K. Hubbard v = z*x; 4311dc2417SBruce Evans r = S2+z*(S3+z*S4); 4459aad933SBruce Evans return x+v*(S1+z*r); 453a8617a8SJordan K. Hubbard } 46