Wed Jun 5 02:11:30 1996 Ulrich Drepper <drepper@cygnus.com>
authorroland <roland>
Wed, 5 Jun 1996 01:04:21 +0000 (01:04 +0000)
committerroland <roland>
Wed, 5 Jun 1996 01:04:21 +0000 (01:04 +0000)
* sysdeps/libm-ieee754/w_acoshl.c, sysdeps/libm-ieee754/w_acosl.c,
sysdeps/libm-ieee754/w_asinl.c, sysdeps/libm-ieee754/w_atan2l.c,
sysdeps/libm-ieee754/w_atanhl.c, sysdeps/libm-ieee754/w_cabsl.c,
sysdeps/libm-ieee754/w_coshl.c, sysdeps/libm-ieee754/w_dreml.c,
sysdeps/libm-ieee754/w_expl.c, sysdeps/libm-ieee754/w_fmodl.c,
sysdeps/libm-ieee754/w_gammal.c, sysdeps/libm-ieee754/w_gammal_r.c,
sysdeps/libm-ieee754/w_hypotl.c, sysdeps/libm-ieee754/w_j0l.c,
sysdeps/libm-ieee754/w_j1l.c, sysdeps/libm-ieee754/w_jnl.c,
sysdeps/libm-ieee754/w_lgammal.c, sysdeps/libm-ieee754/w_lgammal_r.c,
sysdeps/libm-ieee754/w_log10l.c, sysdeps/libm-ieee754/w_logl.c,
sysdeps/libm-ieee754/w_powl.c, sysdeps/libm-ieee754/w_remainderl.c,
sysdeps/libm-ieee754/w_scalbl.c, sysdeps/libm-ieee754/w_sinhl.c,
sysdeps/libm-ieee754/w_sqrtl.c: New files.  Wrapper functions
around long double function implementations.

17 files changed:
sysdeps/libm-ieee754/w_acosl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_atan2l.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_cabsl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_expl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_fmodl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_gammal.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_gammal_r.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_hypotl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_j0l.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_lgammal.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_log10l.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_logl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_powl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_remainderl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_scalbl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_sinhl.c [new file with mode: 0644]
sysdeps/libm-ieee754/w_sqrtl.c [new file with mode: 0644]

diff --git a/sysdeps/libm-ieee754/w_acosl.c b/sysdeps/libm-ieee754/w_acosl.c
new file mode 100644 (file)
index 0000000..cd9cecf
--- /dev/null
@@ -0,0 +1,48 @@
+/* w_acosl.c -- long double version of w_acos.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrap_acosl(x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __acosl(long double x)      /* wrapper acos */
+#else
+       long double __acosl(x)                  /* wrapper acos */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_acosl(x);
+#else
+       long double z;
+       z = __ieee754_acosl(x);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(x)) return z;
+       if(fabsl(x)>1.0) {
+               return __kernel_standard(x,x,201); /* acosl(|x|>1) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__acosl, acosl)
diff --git a/sysdeps/libm-ieee754/w_atan2l.c b/sysdeps/libm-ieee754/w_atan2l.c
new file mode 100644 (file)
index 0000000..9e6e56b
--- /dev/null
@@ -0,0 +1,48 @@
+/* w_atan2l.c -- long double version of w_atan2.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper atan2l(y,x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __atan2l(long double y, long double x) /* wrapper atan2l */
+#else
+       long double __atan2l(y,x)                       /* wrapper atan2l */
+       long double y,x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_atan2l(y,x);
+#else
+       long double z;
+       z = __ieee754_atan2l(y,x);
+       if(_LIB_VERSION == _IEEE_||__isnanl(x)||__isnanl(y)) return z;
+       if(x==0.0&&y==0.0) {
+               return __kernel_standard(y,x,203); /* atan2l(+-0,+-0) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__atan2l, atan2l)
diff --git a/sysdeps/libm-ieee754/w_cabsl.c b/sysdeps/libm-ieee754/w_cabsl.c
new file mode 100644 (file)
index 0000000..e82130d
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * cabsl() wrapper for hypotl().
+ *
+ * Written by J.T. Conklin, <jtc@wimsey.com>
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ * Placed into the Public Domain, 1994.
+ */
+
+#include <math.h>
+
+long double
+__cabsl(z)
+       struct __cabsl_complex z;
+{
+       return __hypotl(z.x, z.y);
+}
+weak_alias (__cabsl, cabsl)
diff --git a/sysdeps/libm-ieee754/w_expl.c b/sysdeps/libm-ieee754/w_expl.c
new file mode 100644 (file)
index 0000000..b8152ce
--- /dev/null
@@ -0,0 +1,60 @@
+/* w_expl.c -- long double version of w_exp.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper expl(x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+o_threshold=  1.135652340629414394949193107797076489134e4,
+  /* 0x400C, 0xB17217F7, 0xD1CF79AC */
+u_threshold= -1.140019167866942050398521670162263001513e4;
+  /* 0x400C, 0xB220C447, 0x69C201E8 */
+
+#ifdef __STDC__
+       long double __expl(long double x)       /* wrapper exp */
+#else
+       long double __expl(x)                   /* wrapper exp */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_expl(x);
+#else
+       long double z;
+       z = __ieee754_expl(x);
+       if(_LIB_VERSION == _IEEE_) return z;
+       if(__finitel(x)) {
+           if(x>o_threshold)
+               return __kernel_standard(x,x,206); /* exp overflow */
+           else if(x<u_threshold)
+               return __kernel_standard(x,x,207); /* exp underflow */
+       }
+       return z;
+#endif
+}
+weak_alias (__expl, expl)
diff --git a/sysdeps/libm-ieee754/w_fmodl.c b/sysdeps/libm-ieee754/w_fmodl.c
new file mode 100644 (file)
index 0000000..71ed4a9
--- /dev/null
@@ -0,0 +1,48 @@
+/* w_fmodl.c -- long double version of w_fmod.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper fmodl(x,y)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __fmodl(long double x, long double y)/* wrapper fmodl */
+#else
+       long double __fmodl(x,y)                /* wrapper fmodl */
+       long double x,y;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_fmodl(x,y);
+#else
+       long double z;
+       z = __ieee754_fmodl(x,y);
+       if(_LIB_VERSION == _IEEE_ ||__isnanl(y)||__isnanl(x)) return z;
+       if(y==0.0) {
+               return __kernel_standard(x,y,227); /* fmod(x,0) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__fmodl, fmodl)
diff --git a/sysdeps/libm-ieee754/w_gammal.c b/sysdeps/libm-ieee754/w_gammal.c
new file mode 100644 (file)
index 0000000..f72e2e7
--- /dev/null
@@ -0,0 +1,54 @@
+/* w_gammal.c -- long double version of w_gamma.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* long double gammal(double x)
+ * Return the logarithm of the Gamma function of x.
+ *
+ * Method: call gammal_r
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+extern int signgam;
+
+#ifdef __STDC__
+       long double __gammal(long double x)
+#else
+       long double __gammal(x)
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_lgammal_r(x,&signgam);
+#else
+        long double y;
+        y = __ieee754_lgammal_r(x,&signgam);
+        if(_LIB_VERSION == _IEEE_) return y;
+        if(!__finitel(y)&&__finitel(x)) {
+            if(__floorl(x)==x&&x<=0.0)
+                return __kernel_standard(x,x,241); /* gamma pole */
+            else
+                return __kernel_standard(x,x,240); /* gamma overflow */
+        } else
+            return y;
+#endif
+}
+weak_alias (__gammal, gammal)
diff --git a/sysdeps/libm-ieee754/w_gammal_r.c b/sysdeps/libm-ieee754/w_gammal_r.c
new file mode 100644 (file)
index 0000000..ad6a43a
--- /dev/null
@@ -0,0 +1,52 @@
+/* w_gammal_r.c -- long double version of w_gamma_r.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper long double gammal_r(long double x, int *signgamp)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __gammal_r(long double x, int *signgamp)
+                                               /* wrapper lgammal_r */
+#else
+       long double __gammal_r(x,signgamp)      /* wrapper lgamma_r */
+        long double x; int *signgamp;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_lgammal_r(x,signgamp);
+#else
+        long double y;
+        y = __ieee754_lgammal_r(x,signgamp);
+        if(_LIB_VERSION == _IEEE_) return y;
+        if(!__finitel(y)&&__finitel(x)) {
+            if(__floorl(x)==x&&x<=0.0)
+                return __kernel_standard(x,x,241); /* gamma pole */
+            else
+                return __kernel_standard(x,x,240); /* gamma overflow */
+        } else
+            return y;
+#endif
+}
+weak_alias (__gammal_r, gammal_r)
diff --git a/sysdeps/libm-ieee754/w_hypotl.c b/sysdeps/libm-ieee754/w_hypotl.c
new file mode 100644 (file)
index 0000000..9f92e95
--- /dev/null
@@ -0,0 +1,48 @@
+/* w_hypotl.c -- long double version of w_hypot.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper hypotl(x,y)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __hypotl(longdouble x, long double y)/* wrapper hypotl */
+#else
+       long double __hypotl(x,y)                        /* wrapper hypotl */
+       long double x,y;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_hypotl(x,y);
+#else
+       long double z;
+       z = __ieee754_hypotl(x,y);
+       if(_LIB_VERSION == _IEEE_) return z;
+       if((!__finitel(z))&&__finitel(x)&&__finitel(y))
+           return __kernel_standard(x,y,204); /* hypot overflow */
+       else
+           return z;
+#endif
+}
+weak_alias (__hypotl, hypotl)
diff --git a/sysdeps/libm-ieee754/w_j0l.c b/sysdeps/libm-ieee754/w_j0l.c
new file mode 100644 (file)
index 0000000..7b4144c
--- /dev/null
@@ -0,0 +1,75 @@
+/* w_j0l.c -- long double version of w_j0.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper j0l(long double x), y0l(long double x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+       long double __j0l(long double x)                /* wrapper j0l */
+#else
+       long double __j0l(x)                            /* wrapper j0 */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_j0l(x);
+#else
+       long double z = __ieee754_j0l(x);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(x)) return z;
+       if(fabsl(x)>X_TLOSS) {
+               return __kernel_standard(x,x,234); /* j0(|x|>X_TLOSS) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__j0l, j0l)
+
+#ifdef __STDC__
+       long double __y0l(long double x)                /* wrapper y0l */
+#else
+       long double __y0l(x)                            /* wrapper y0 */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_y0l(x);
+#else
+       long double z;
+       z = __ieee754_y0l(x);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(x) ) return z;
+        if(x <= 0.0){
+                if(x==0.0)
+                    /* d= -one/(x-x); */
+                    return __kernel_standard(x,x,208);
+                else
+                    /* d = zero/(x-x); */
+                    return __kernel_standard(x,x,209);
+        }
+       if(x>X_TLOSS) {
+               return __kernel_standard(x,x,235); /* y0(x>X_TLOSS) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__y0l, y0l)
diff --git a/sysdeps/libm-ieee754/w_lgammal.c b/sysdeps/libm-ieee754/w_lgammal.c
new file mode 100644 (file)
index 0000000..3d2cdbb
--- /dev/null
@@ -0,0 +1,54 @@
+/* w_lgammal.c -- long double version of w_lgamma.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* long double lgammal(long double x)
+ * Return the logarithm of the Gamma function of x.
+ *
+ * Method: call __ieee754_lgammal_r
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+extern int signgam;
+
+#ifdef __STDC__
+       long double __lgammal(long double x)
+#else
+       long double __lgammal(x)
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_lgammal_r(x,&signgam);
+#else
+        long double y;
+        y = __ieee754_lgammal_r(x,&signgam);
+        if(_LIB_VERSION == _IEEE_) return y;
+        if(!__finitel(y)&&__finitel(x)) {
+            if(__floorl(x)==x&&x<=0.0)
+                return __kernel_standard(x,x,215); /* lgamma pole */
+            else
+                return __kernel_standard(x,x,214); /* lgamma overflow */
+        } else
+            return y;
+#endif
+}
+weak_alias (__lgammal, lgammal)
diff --git a/sysdeps/libm-ieee754/w_log10l.c b/sysdeps/libm-ieee754/w_log10l.c
new file mode 100644 (file)
index 0000000..0d08616
--- /dev/null
@@ -0,0 +1,51 @@
+/* w_log10l.c -- long double version of w_log10.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper log10l(X)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __log10l(long double x)     /* wrapper log10l */
+#else
+       long double __log10l(x)                 /* wrapper log10l */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_log10l(x);
+#else
+       long double z;
+       z = __ieee754_log10l(x);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(x)) return z;
+       if(x<=0.0) {
+           if(x==0.0)
+               return __kernel_standard(x,x,218); /* log10(0) */
+           else
+               return __kernel_standard(x,x,219); /* log10(x<0) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__log10l, log10l)
diff --git a/sysdeps/libm-ieee754/w_logl.c b/sysdeps/libm-ieee754/w_logl.c
new file mode 100644 (file)
index 0000000..bb979c2
--- /dev/null
@@ -0,0 +1,48 @@
+/* w_logl.c -- long double version of w_log.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper logl(x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __logl(long double x)       /* wrapper logl */
+#else
+       long double __logl(x)                   /* wrapper logl */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_logl(x);
+#else
+       long double z;
+       z = __ieee754_logl(x);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(x) || x > 0.0) return z;
+       if(x==0.0)
+           return __kernel_standard(x,x,216); /* log(0) */
+       else
+           return __kernel_standard(x,x,217); /* log(x<0) */
+#endif
+}
+weak_alias (__logl, logl)
diff --git a/sysdeps/libm-ieee754/w_powl.c b/sysdeps/libm-ieee754/w_powl.c
new file mode 100644 (file)
index 0000000..019664e
--- /dev/null
@@ -0,0 +1,64 @@
+/* w_powl.c -- long double version of w_pow.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * wrapper powl(x,y) return x**y
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+
+#ifdef __STDC__
+       long double __powl(long double x, long double y)/* wrapper powl */
+#else
+       long double __powl(x,y)                 /* wrapper powl */
+       long double x,y;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return  __ieee754_powl(x,y);
+#else
+       long double z;
+       z=__ieee754_powl(x,y);
+       if(_LIB_VERSION == _IEEE_|| __isnanl(y)) return z;
+       if(__isnanl(x)) {
+           if(y==0.0)
+               return __kernel_standard(x,y,242); /* pow(NaN,0.0) */
+           else
+               return z;
+       }
+       if(x==0.0){
+           if(y==0.0)
+               return __kernel_standard(x,y,220); /* pow(0.0,0.0) */
+           if(__finite(y)&&y<0.0)
+               return __kernel_standard(x,y,223); /* pow(0.0,negative) */
+           return z;
+       }
+       if(!__finitel(z)) {
+           if(__finitel(x)&&__finitel(y)) {
+               if(__isnanl(z))
+                   return __kernel_standard(x,y,224); /* pow neg**non-int */
+               else
+                   return __kernel_standard(x,y,221); /* pow overflow */
+           }
+       }
+       if(z==0.0&&__finitel(x)&&__finitel(y))
+           return __kernel_standard(x,y,222); /* pow underflow */
+       return z;
+#endif
+}
+weak_alias (__powl, powl)
diff --git a/sysdeps/libm-ieee754/w_remainderl.c b/sysdeps/libm-ieee754/w_remainderl.c
new file mode 100644 (file)
index 0000000..2841401
--- /dev/null
@@ -0,0 +1,48 @@
+/* w_remainderl.c -- long double version of w_remainder.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper remainderl(x,p)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+       long double __remainderl(long double x, long double y)
+               /* wrapper remainderl */
+#else
+       long double __remainderl(x,y)                   /* wrapper remainder */
+       long double x,y;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_remainderl(x,y);
+#else
+       long double z;
+       z = __ieee754_remainderl(x,y);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(y)) return z;
+       if(y==0.0)
+           return __kernel_standard(x,y,228); /* remainder(x,0) */
+       else
+           return z;
+#endif
+}
+weak_alias (__remainderl, remainderl)
diff --git a/sysdeps/libm-ieee754/w_scalbl.c b/sysdeps/libm-ieee754/w_scalbl.c
new file mode 100644 (file)
index 0000000..ff5117d
--- /dev/null
@@ -0,0 +1,65 @@
+/* w_scalbl.c -- long double version of w_scalb.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper scalbl(long double x, long double fn) is provide for
+ * passing various standard test suite. One
+ * should use scalbnl() instead.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#include <errno.h>
+
+#ifdef __STDC__
+#ifdef _SCALB_INT
+       long double __scalbl(long double x, int fn)     /* wrapper scalbl */
+#else
+       long double __scalbl(long double x, long double fn)/* wrapper scalbl */
+#endif
+#else
+       long double __scalbl(x,fn)                      /* wrapper scalbl */
+#ifdef _SCALB_INT
+       long double x; int fn;
+#else
+       long double x,fn;
+#endif
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_scalbl(x,fn);
+#else
+       long double z;
+       z = __ieee754_scalbl(x,fn);
+       if(_LIB_VERSION == _IEEE_) return z;
+       if(!(__finitel(z)||__isnanl(z))&&__finitel(x)) {
+           return __kernel_standard(x,(double)fn,232); /* scalb overflow */
+       }
+       if(z==0.0&&z!=x) {
+           return __kernel_standard(x,(double)fn,233); /* scalb underflow */
+       }
+#ifndef _SCALB_INT
+       if(!__finitel(fn)) errno = ERANGE;
+#endif
+       return z;
+#endif
+}
+weak_alias (__scalbl, scalbl)
diff --git a/sysdeps/libm-ieee754/w_sinhl.c b/sysdeps/libm-ieee754/w_sinhl.c
new file mode 100644 (file)
index 0000000..3e93cc5
--- /dev/null
@@ -0,0 +1,47 @@
+/* w_sinhl.c -- long double version of w_sinh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper sinhl(x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+       long double __sinhl(long double x)      /* wrapper sinhl */
+#else
+       long double __sinhl(x)                  /* wrapper sinhl */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_sinhl(x);
+#else
+       long double z;
+       z = __ieee754_sinhl(x);
+       if(_LIB_VERSION == _IEEE_) return z;
+       if(!__finitel(z)&&__finitel(x)) {
+           return __kernel_standard(x,x,225); /* sinh overflow */
+       } else
+           return z;
+#endif
+}
+weak_alias (__sinhl, sinhl)
diff --git a/sysdeps/libm-ieee754/w_sqrtl.c b/sysdeps/libm-ieee754/w_sqrtl.c
new file mode 100644 (file)
index 0000000..5873ce9
--- /dev/null
@@ -0,0 +1,47 @@
+/* w_sqrtl.c -- long double version of w_sqrt.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * 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
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper sqrtl(x)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+       long double __sqrtl(long double x)      /* wrapper sqrtl */
+#else
+       long double __sqrtl(x)                  /* wrapper sqrtl */
+       long double x;
+#endif
+{
+#ifdef _IEEE_LIBM
+       return __ieee754_sqrtl(x);
+#else
+       long double z;
+       z = __ieee754_sqrtl(x);
+       if(_LIB_VERSION == _IEEE_ || __isnanl(x)) return z;
+       if(x<0.0) {
+           return __kernel_standard(x,x,226); /* sqrt(negative) */
+       } else
+           return z;
+#endif
+}
+weak_alias (__sqrtl, sqrtl)