Now is for double.
authordrepper <drepper>
Sun, 28 Dec 1997 15:11:46 +0000 (15:11 +0000)
committerdrepper <drepper>
Sun, 28 Dec 1997 15:11:46 +0000 (15:11 +0000)
sysdeps/powerpc/s_llrint.c
sysdeps/powerpc/s_llround.c
sysdeps/powerpc/s_lrint.c
sysdeps/powerpc/s_lround.c

index 7ca48c0..1789e79 100644 (file)
@@ -1,5 +1,4 @@
-/* Round a long long floating point value to an integer in the current
-   rounding mode.
+/* Round a double value to a long long in the current rounding mode.
    Copyright (C) 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
 #include "math.h"
 
 long long int
-__llrint (long double x)
+__llrint (double x)
 {
-  return (long long int) __rintl (x);
+  return (long long int) __rint (x);
 }
 weak_alias (__llrint, llrint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llrint, __llrintl)
+weak_alias (__llrint, llrintl)
+#endif
index fbe3a32..6b49dbf 100644 (file)
@@ -1,4 +1,4 @@
-/* Round long double value to long int.
+/* Round double value to long long int.
    Copyright (C) 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    clipping to MAX_LLONG or MIN_LLONG.  */
 
 long long int
-__llround (long double x)
+__llround (double x)
 {
-  long double xrf;
+  double xrf;
   long long int xr;
   xr = (long long int) x;
-  xrf = (long double) xr;
+  xrf = (double) xr;
   if (x >= 0.0)
     if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0)
       return x+1;
@@ -44,3 +44,7 @@ __llround (long double x)
       return x;
 }
 weak_alias (__llround, llround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llround, __llroundl)
+weak_alias (__llround, llroundl)
+#endif
index 647cf30..a060598 100644 (file)
 
 #include "math.h"
 
-#ifdef NO_LONG_DOUBLE
-
 long int
-__lrint (long double x)
-{
-  return (long int) __rintl(x);
-}
-
-#else
-
-long int
-__lrint (long double x)
+__lrint (double x)
 {
   union {
     double d;
     long int ll[2];
   } u;
   asm ("fctiw %0,%1" : "=f"(u.d) : "f"(x));
-  return d.ll[1];
+  return u.ll[1];
 }
+weak_alias (__lrint, lrint)
+
+/* This code will also work for a 'float' argument.  */
+asm ("\
+        .globl __lrintf
+        .globl lrintf
+        .weak lrintf
+       .set __lrintf,__lrint
+       .set lrintf,__lrint
+");
 
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lrint, __lrintl)
+weak_alias (__lrint, lrintl)
 #endif
-weak_alias (__lrint, lrint)
index a6cb6c9..c52c038 100644 (file)
@@ -1,4 +1,4 @@
-/* Round long double value to long int.
+/* Round double value to long int.
    Copyright (C) 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    clipping to MAX_LONG or MIN_LONG.  */
 
 long int
-__lround (long double x)
+__lround (double x)
 {
-  long double xrf;
+  double xrf;
   long int xr;
   xr = (long int) x;
-  xrf = (long double) xr;
+  xrf = (double) xr;
   if (x >= 0.0)
     if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0)
       return x+1;
@@ -44,3 +44,7 @@ __lround (long double x)
       return x;
 }
 weak_alias (__lround, lround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lround, __lroundl)
+weak_alias (__lround, lroundl)
+#endif