Branch data Line data Source code
1 : : /* k_cosf.c -- float version of k_cos.c
2 : : * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
3 : : * Debugged and optimized by Bruce D. Evans.
4 : : */
5 : :
6 : : /*
7 : : * ====================================================
8 : : * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
9 : : *
10 : : * Developed at SunPro, a Sun Microsystems, Inc. business.
11 : : * Permission to use, copy, modify, and distribute this
12 : : * software is freely granted, provided that this notice
13 : : * is preserved.
14 : : * ====================================================
15 : : */
16 : :
17 : : #ifndef INLINE_KERNEL_COSDF
18 : : #include "cdefs-compat.h"
19 : : //__FBSDID("$FreeBSD: src/lib/msun/src/k_cosf.c,v 1.18 2009/06/03 08:16:34 ed Exp $");
20 : : #endif
21 : :
22 : : #include <openlibm_math.h>
23 : :
24 : : #include "math_private.h"
25 : :
26 : : /* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
27 : : static const double
28 : : one = 1.0,
29 : : C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
30 : : C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */
31 : : C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
32 : : C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */
33 : :
34 : : #ifndef INLINE_KERNEL_COSDF
35 : : extern
36 : : #endif
37 : : //__inline float
38 : : OLM_DLLEXPORT float
39 : 53 : __kernel_cosdf(double x)
40 : : {
41 : : double r, w, z;
42 : :
43 : : /* Try to optimize for parallel evaluation as in k_tanf.c. */
44 : 53 : z = x*x;
45 : 53 : w = z*z;
46 : 53 : r = C2+z*C3;
47 : 53 : return ((one+z*C0) + w*C1) + (w*z)*r;
48 : : }
|