e_acoshl.c (22993) | e_acoshl.c (23579) |
---|---|
1/* @(#)e_acosh.c 5.1 93/09/24 */ 2/* 3 * ==================================================== 4 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 5 * 6 * Developed at SunPro, a Sun Microsystems, Inc. business. 7 * Permission to use, copy, modify, and distribute this 8 * software is freely granted, provided that this notice 9 * is preserved. 10 * ==================================================== 11 */ 12 13#ifndef lint | 1/* @(#)e_acosh.c 5.1 93/09/24 */ 2/* 3 * ==================================================== 4 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 5 * 6 * Developed at SunPro, a Sun Microsystems, Inc. business. 7 * Permission to use, copy, modify, and distribute this 8 * software is freely granted, provided that this notice 9 * is preserved. 10 * ==================================================== 11 */ 12 13#ifndef lint |
14static char rcsid[] = "$Id$"; | 14static char rcsid[] = "$Id: e_acosh.c,v 1.4 1997/02/22 15:09:56 peter Exp $"; |
15#endif 16 17/* __ieee754_acosh(x) 18 * Method : 19 * Based on 20 * acosh(x) = log [ x + sqrt(x*x-1) ] 21 * we have 22 * acosh(x) := log(x)+ln2, if x is large; else --- 33 unchanged lines hidden (view full) --- 56 if(hx >=0x7ff00000) { /* x is inf of NaN */ 57 return x+x; 58 } else 59 return __ieee754_log(x)+ln2; /* acosh(huge)=log(2x) */ 60 } else if(((hx-0x3ff00000)|lx)==0) { 61 return 0.0; /* acosh(1) = 0 */ 62 } else if (hx > 0x40000000) { /* 2**28 > x > 2 */ 63 t=x*x; | 15#endif 16 17/* __ieee754_acosh(x) 18 * Method : 19 * Based on 20 * acosh(x) = log [ x + sqrt(x*x-1) ] 21 * we have 22 * acosh(x) := log(x)+ln2, if x is large; else --- 33 unchanged lines hidden (view full) --- 56 if(hx >=0x7ff00000) { /* x is inf of NaN */ 57 return x+x; 58 } else 59 return __ieee754_log(x)+ln2; /* acosh(huge)=log(2x) */ 60 } else if(((hx-0x3ff00000)|lx)==0) { 61 return 0.0; /* acosh(1) = 0 */ 62 } else if (hx > 0x40000000) { /* 2**28 > x > 2 */ 63 t=x*x; |
64 return __ieee754_log(2.0*x-one/(x+sqrt(t-one))); | 64 return __ieee754_log(2.0*x-one/(x+__ieee754_sqrt(t-one))); |
65 } else { /* 1<x<2 */ 66 t = x-one; | 65 } else { /* 1<x<2 */ 66 t = x-one; |
67 return log1p(t+sqrt(2.0*t+t*t)); | 67 return log1p(t+__ieee754_sqrt(2.0*t+t*t)); |
68 } 69} | 68 } 69} |