diff options
author | das <das@FreeBSD.org> | 2005-02-04 18:26:06 +0000 |
---|---|---|
committer | das <das@FreeBSD.org> | 2005-02-04 18:26:06 +0000 |
commit | a47af911ba88a733157f219bcea374aafc0e6a34 (patch) | |
tree | 358c37c6dfb32659eea19d2a72397142931bc562 /lib/msun/src/k_cos.c | |
parent | e8403b23681c8ac8f2c86499943b43c359a4e301 (diff) | |
download | FreeBSD-src-a47af911ba88a733157f219bcea374aafc0e6a34.zip FreeBSD-src-a47af911ba88a733157f219bcea374aafc0e6a34.tar.gz |
Reduce diffs against vendor source (Sun fdlibm 5.3).
Diffstat (limited to 'lib/msun/src/k_cos.c')
-rw-r--r-- | lib/msun/src/k_cos.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/msun/src/k_cos.c b/lib/msun/src/k_cos.c index f8fe2fd..ad78f8e 100644 --- a/lib/msun/src/k_cos.c +++ b/lib/msun/src/k_cos.c @@ -1,11 +1,12 @@ -/* @(#)k_cos.c 5.1 93/09/24 */ + +/* @(#)k_cos.c 1.3 95/01/18 */ /* * ==================================================== * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. * - * Developed at SunPro, a Sun Microsystems, Inc. business. + * Developed at SunSoft, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -18,7 +19,7 @@ static char rcsid[] = "$FreeBSD$"; * __kernel_cos( x, y ) * kernel cos function on [-pi/4, pi/4], pi/4 ~ 0.785398164 * Input x is assumed to be bounded by ~pi/4 in magnitude. - * Input y is the tail of x. + * Input y is the tail of x. * * Algorithm * 1. Since cos(-x) = cos(x), we need only to consider positive x. @@ -28,15 +29,15 @@ static char rcsid[] = "$FreeBSD$"; * 4 14 * cos(x) ~ 1 - x*x/2 + C1*x + ... + C6*x * where the remez error is - * + * * | 2 4 6 8 10 12 14 | -58 * |cos(x)-(1-.5*x +C1*x +C2*x +C3*x +C4*x +C5*x +C6*x )| <= 2 - * | | - * - * 4 6 8 10 12 14 + * | | + * + * 4 6 8 10 12 14 * 4. let r = C1*x +C2*x +C3*x +C4*x +C5*x +C6*x , then * cos(x) = 1 - x*x/2 + r - * since cos(x+y) ~ cos(x) - sin(x)*y + * since cos(x+y) ~ cos(x) - sin(x)*y * ~ cos(x) - x*y, * a correction term is necessary in cos(x) and hence * cos(x+y) = 1 - (x*x/2 - (r - x*y)) @@ -73,7 +74,7 @@ __kernel_cos(double x, double y) } z = x*x; r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*C6))))); - if(ix < 0x3FD33333) /* if |x| < 0.3 */ + if(ix < 0x3FD33333) /* if |x| < 0.3 */ return one - (0.5*z - (z*r - x*y)); else { if(ix > 0x3fe90000) { /* x > 0.78125 */ |