2006-01-31 Martin Schwidefsky <schwidefsky@de.ibm.com>, Jakub Jelinek <jakub@redhat...
[kopensolaris-gnu/glibc.git] / sysdeps / s390 / fpu / bits / mathinline.h
index 4d22922..5c6b83a 100644 (file)
@@ -47,15 +47,26 @@ __NTH (__signbit (double __x))
   return __u.__i < 0;
 }
 
+# ifndef __NO_LONG_DOUBLE_MATH
+__MATH_INLINE int
+__NTH (__signbitl (long double __x))
+{
+  __extension__ union { long double __l; int __i[4]; } __u = { __l: __x };
+  return __u.__i[0] < 0;
+}
+# else
+__MATH_INLINE int
+__NTH (__signbitl (long double __x))
+{
+  return __signbit ((double) __x);
+}
+# endif
+
 #endif /* C99 */
 
 /* This code is used internally in the GNU libc.  */
 #ifdef __LIBC_INTERNAL_MATH_INLINES
 
-#include <sysdep.h>
-#include <ldsodefs.h>
-#include <dl-procinfo.h>
-
 __MATH_INLINE double
 __NTH (__ieee754_sqrt (double x))
 {
@@ -74,6 +85,17 @@ __NTH (__ieee754_sqrtf (float x))
   return res;
 }
 
+# if !defined __NO_LONG_DOUBLE_MATH
+__MATH_INLINE long double
+__NTH (sqrtl (long double __x))
+{
+  long double res;
+
+  asm ( "sqxbr %0,%1" : "=f" (res) : "f" (__x) );
+  return res;
+}
+# endif /* !__NO_LONG_DOUBLE_MATH */
+
 #endif /* __LIBC_INTERNAL_MATH_INLINES */
 
 #endif /* __NO_MATH_INLINES */