quotearg: don't attempt to store 1 << 31 into an "int"
[gnulib.git] / lib / logf.c
index 3bf0f13..ffa2f08 100644 (file)
@@ -1,5 +1,5 @@
 /* Natural logarithmic function.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -24,10 +24,17 @@ logf (float x)
 #undef logf
 {
 #if HAVE_LOGF
-  /* Work around the OSF/1 5.1 bug.  */
-  if (x == 0.0f)
-    /* Return -Infinity.  */
-    return -1.0f / 0.0f;
+  if (x <= 0.0f)
+    {
+      /* Work around the OSF/1 5.1 bug.  */
+      if (x == 0.0f)
+        /* Return -Infinity.  */
+        return -1.0f / 0.0f;
+      /* Work around the NetBSD 5.1 bug.  */
+      else /* x < 0.0 */
+        /* Return NaN.  */
+        return 0.0f / 0.0f;
+    }
   return logf (x);
 #else
   return (float) log ((double) x);