2006-01-31 Martin Schwidefsky <schwidefsky@de.ibm.com>, Jakub Jelinek <jakub@redhat...
[kopensolaris-gnu/glibc.git] / sysdeps / s390 / fpu / bits / mathinline.h
index d83d9ca..5c6b83a 100644 (file)
 #ifdef __USE_ISOC99
 
 /* Test for negative number.  Used in the signbit() macro.  */
-__MATH_INLINE int __signbitf (float __x) __THROW
+__MATH_INLINE int
+__NTH (__signbitf (float __x))
 {
   __extension__ union { float __f; int __i; } __u = { __f: __x };
   return __u.__i < 0;
 }
 
-__MATH_INLINE int __signbit (double __x) __THROW
+__MATH_INLINE int
+__NTH (__signbit (double __x))
 {
   __extension__ union { double __d; long __i; } __u = { __d: __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
-__ieee754_sqrt (double x)
+__NTH (__ieee754_sqrt (double x))
 {
   double res;
-     
+
   asm ( "sqdbr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
 
 __MATH_INLINE float
-__ieee754_sqrtf (float x)
+__NTH (__ieee754_sqrtf (float x))
 {
   float res;
-  
+
   asm ( "sqebr %0,%1" : "=f" (res) : "f" (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 */