Rename iconv_.h to iconv.in.h.
[gnulib.git] / lib / sqrtl.c
index 4ca99d7..bf1b2d5 100644 (file)
@@ -1,7 +1,7 @@
 /* Emulation for sqrtl.
    Contributed by Paolo Bonzini
 
-   Copyright 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2002, 2003, 2007 Free Software Foundation, Inc.
 
    This file is part of gnulib.
 
    with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#include <float.h>
+#include <config.h>
+
+/* Specification.  */
 #include <math.h>
 
-#include "mathl.h"
+#include <float.h>
+#include "isnanl.h"
 
 /* A simple Newton-Raphson method. */
 long double
@@ -31,12 +34,16 @@ sqrtl(long double x)
   long double delta, y;
   int exponent;
 
+  /* Check for NaN */
+  if (isnanl (x))
+    return x;
+
   /* Check for negative numbers */
   if (x < 0.0L)
     return (long double) sqrt(-1);
 
-  /* Check for zero, NANs and infinites */
-  if (x + x == x || x != x)
+  /* Check for zero and infinites */
+  if (x + x == x)
     return x;
 
   frexpl (x, &exponent);