k_logf.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * ====================================================
  3. * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
  4. *
  5. * Developed at SunPro, a Sun Microsystems, Inc. business.
  6. * Permission to use, copy, modify, and distribute this
  7. * software is freely granted, provided that this notice
  8. * is preserved.
  9. * ====================================================
  10. */
  11. #include "cdefs-compat.h"
  12. //__FBSDID("$FreeBSD: src/lib/msun/src/k_logf.h,v 1.3 2011/10/15 05:23:28 das Exp $");
  13. /*
  14. * Float version of k_log.h. See the latter for most comments.
  15. */
  16. static const float
  17. /* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
  18. Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
  19. Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
  20. Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
  21. Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
  22. static inline float
  23. k_log1pf(float f)
  24. {
  25. float hfsq,s,z,R,w,t1,t2;
  26. s = f/((float)2.0+f);
  27. z = s*s;
  28. w = z*z;
  29. t1= w*(Lg2+w*Lg4);
  30. t2= z*(Lg1+w*Lg3);
  31. R = t2+t1;
  32. hfsq=(float)0.5*f*f;
  33. return s*(hfsq+R);
  34. }