OSDN Git Service

mips/sysdep.h: Unify mips sysdep.h
[uclinux-h8/uClibc.git] / libm / e_acosh.c
index 8383519..219b3d6 100644 (file)
@@ -1,22 +1,17 @@
-/* @(#)e_acosh.c 5.1 93/09/24 */
 /*
  * ====================================================
  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
  *
  * Developed at SunPro, 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.
  * ====================================================
  */
 
-#if defined(LIBM_SCCS) && !defined(lint)
-static char rcsid[] = "$NetBSD: e_acosh.c,v 1.9 1995/05/12 04:57:18 jtc Exp $";
-#endif
-
 /* __ieee754_acosh(x)
  * Method :
- *     Based on 
+ *     Based on
  *             acosh(x) = log [ x + sqrt(x*x-1) ]
  *     we have
  *             acosh(x) := log(x)+ln2, if x is large; else
@@ -31,21 +26,12 @@ static char rcsid[] = "$NetBSD: e_acosh.c,v 1.9 1995/05/12 04:57:18 jtc Exp $";
 #include "math.h"
 #include "math_private.h"
 
-#ifdef __STDC__
-static const double 
-#else
-static double 
-#endif
+static const double
 one    = 1.0,
 ln2    = 6.93147180559945286227e-01;  /* 0x3FE62E42, 0xFEFA39EF */
 
-#ifdef __STDC__
-       double __ieee754_acosh(double x)
-#else
-       double __ieee754_acosh(x)
-       double x;
-#endif
-{      
+double attribute_hidden __ieee754_acosh(double x)
+{
        double t;
        int32_t hx;
        u_int32_t lx;
@@ -55,7 +41,7 @@ ln2   = 6.93147180559945286227e-01;  /* 0x3FE62E42, 0xFEFA39EF */
        } else if(hx >=0x41b00000) {    /* x > 2**28 */
            if(hx >=0x7ff00000) {       /* x is inf of NaN */
                return x+x;
-           } else 
+           } else
                return __ieee754_log(x)+ln2;    /* acosh(huge)=log(2x) */
        } else if(((hx-0x3ff00000)|lx)==0) {
            return 0.0;                 /* acosh(1) = 0 */
@@ -67,3 +53,21 @@ ln2  = 6.93147180559945286227e-01;  /* 0x3FE62E42, 0xFEFA39EF */
            return log1p(t+sqrt(2.0*t+t*t));
        }
 }
+
+/*
+ * wrapper acosh(x)
+ */
+#ifndef _IEEE_LIBM
+double acosh(double x)
+{
+       double z = __ieee754_acosh(x);
+       if (_LIB_VERSION == _IEEE_ || isnan(x))
+               return z;
+       if (x < 1.0)
+               return __kernel_standard(x, x, 29); /* acosh(x<1) */
+       return z;
+}
+#else
+strong_alias(__ieee754_acosh, acosh)
+#endif
+libm_hidden_def(acosh)