11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* k_cosf.c -- float version of k_cos.c 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Debugged and optimized by Bruce D. Evans. 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ==================================================== 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Developed at SunPro, a Sun Microsystems, Inc. business. 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Permission to use, copy, modify, and distribute this 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * software is freely granted, provided that this notice 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * is preserved. 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ==================================================== 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef INLINE_KERNEL_COSDF 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef lint 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstatic char rcsid[] = "$FreeBSD: src/lib/msun/src/k_cosf.c,v 1.15 2005/11/30 11:51:17 bde Exp $"; 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include "math.h" 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include "math_private.h" 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */ 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstatic const double 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectone = 1.0, 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source ProjectC0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */ 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source ProjectC1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */ 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source ProjectC2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */ 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source ProjectC3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */ 331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef INLINE_KERNEL_COSDF 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern inline 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat 381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__kernel_cosdf(double x) 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project double r, w, z; 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Try to optimize for parallel evaluation as in k_tanf.c. */ 431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project z = x*x; 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project w = z*z; 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project r = C2+z*C3; 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project return ((one+z*C0) + w*C1) + (w*z)*r; 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} 48