Deleted Added
full compact
k_cosf.c (152647) k_cosf.c (152869)
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
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_COSF
17#ifndef INLINE_KERNEL_COSDF
18#ifndef lint
18#ifndef lint
19static char rcsid[] = "$FreeBSD: head/lib/msun/src/k_cosf.c 152647 2005-11-21 04:57:12Z bde $";
19static char rcsid[] = "$FreeBSD: head/lib/msun/src/k_cosf.c 152869 2005-11-28 04:58:57Z bde $";
20#endif
21#endif
22
23#include "math.h"
24#include "math_private.h"
25
20#endif
21#endif
22
23#include "math.h"
24#include "math_private.h"
25
26/* |cos(x) - c(x)| < 2**-33.1 (~[-9.39e-11, 1.083e-10]). */
27static const float
26/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
27static const double
28one = 1.0,
28one = 1.0,
29C1 = 0xaaaaa5.0p-28, /* 0.041666645557 */
30C2 = -0xb60615.0p-33, /* -0.0013887310633 */
31C3 = 0xccf47d.0p-39; /* 0.000024432542887 */
29C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
30C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */
31C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
32C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */
32
33
33#ifdef INLINE_KERNEL_COSF
34#ifdef INLINE_KERNEL_COSDF
34extern inline
35#endif
36float
35extern inline
36#endif
37float
37__kernel_cosf(float x, float y)
38__kernel_cosdf(double x)
38{
39{
39 float hz,z,r,w;
40 double z,r;
40
41 z = x*x;
42 r = z*(C1+z*(C2+z*C3));
41
42 z = x*x;
43 r = z*(C1+z*(C2+z*C3));
43 hz = (float)0.5*z;
44 w = one-hz;
45 return w + (((one-w)-hz) + (z*r-x*y));
44 return (one+z*C0) + z*r;
46}
45}