Use gsl_isnan instead of isnan, gsl_isinf instead of isinf, and
authorBen Pfaff <blp@gnu.org>
Fri, 16 May 2008 05:35:09 +0000 (05:35 +0000)
committerBen Pfaff <blp@gnu.org>
Fri, 16 May 2008 05:35:09 +0000 (05:35 +0000)
gsl_finite instead of finite, as a stopgap measure for portability
until appropriate gnulib modules are available.

15 files changed:
src/data/ChangeLog
src/data/data-out.c
src/data/por-file-writer.c
src/language/control/ChangeLog
src/language/control/loop.c
src/language/data-io/ChangeLog
src/language/data-io/inpt-pgm.c
src/language/expressions/ChangeLog
src/language/expressions/evaluate.c
src/language/expressions/helpers.h
src/libpspp/ChangeLog
src/libpspp/hash.c
src/libpspp/misc.h
src/math/ChangeLog
src/math/moments.c

index 064108a4e94daf03cdca9d65dfae7db546f01e1b..c0479931cdacaf2663630d37d1a3a7ec170fc85c 100644 (file)
@@ -1,3 +1,14 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * data-out.c (output_infinite): Use gsl_isnan instead of isnan,
+       and gsl_isinf instead of isinf, as a stopgap measure for
+       portability until appropriate gnulib modules are available.
+
+       * por-file-writer.c (format_trig_double): Similarly, use
+       gsl_finite instead of finite.
+
 2008-03-18  John Darrington <john@darrington.wattle.id.au>
 
        * data-in.c: If category is custom currency, then use
index 86688a6774cd939facdb8453dbd7e9e2832934ec..cef445209a6ef874394f7798b47bafdd173b1317 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <ctype.h>
 #include <float.h>
+#include <gsl/gsl_math.h>
 #include <math.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -927,9 +928,9 @@ output_infinite (double number, const struct fmt_spec *format, char *output)
     {
       const char *s;
 
-      if (isnan (number))
+      if (gsl_isnan (number))
         s = "NaN";
-      else if (isinf (number))
+      else if (gsl_isinf (number))
         s = number > 0 ? "+Infinity" : "-Infinity";
       else
         s = "Unknown";
index 1f348f67986f3e613d7633b1107406dff2640dce..75022ea7f6d8b924d72112e198b59d677c79e3a0 100644 (file)
@@ -20,6 +20,7 @@
 #include <ctype.h>
 #include <errno.h>
 #include <float.h>
+#include <gsl/gsl_math.h>
 #include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -777,7 +778,7 @@ format_trig_double (long double value, int base_10_precision, char output[])
      0...30**6, an invariant of the loop below. */
   errno = 0;
   base_2_sig = frexp (value, &base_2_exp);
-  if (errno != 0 || !finite (base_2_sig))
+  if (errno != 0 || !gsl_finite (base_2_sig))
     goto missing_value;
   if (base_2_exp == 0 && base_2_sig == 0.)
     goto zero;
index ecdcc65877d5acd5c0c502440eb1c4938160efef..3421bdf4282a9c218d098deb9f1ed282af17b858 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+       
+       * loop.c (loop_trns_proc): Use gsl_finite instead of finite, , as
+       a stopgap measure for portability until appropriate gnulib modules
+       are available.
+
 2007-09-23  Ben Pfaff  <blp@gnu.org>
 
        Bug #21111.  Reviewed by John Darrington.
index ea020a250dd3b8fbca1702b2ff598f8c85718142..c6309d42186fa814428d5ca8cb5016ebe4ee6003 100644 (file)
@@ -17,6 +17,9 @@
 #include <config.h>
 
 #include "control-stack.h"
+
+#include <gsl/gsl_math.h>
+
 #include <data/case.h>
 #include <data/dictionary.h>
 #include <data/procedure.h>
@@ -320,7 +323,8 @@ loop_trns_proc (void *loop_, struct ccase *c, casenumber case_num)
       case_data_rw (c, loop->index_var)->f = loop->cur;
 
       /* Throw out pathological cases. */
-      if (!finite (loop->cur) || !finite (loop->by) || !finite (loop->last)
+      if (!gsl_finite (loop->cur) || !gsl_finite (loop->by)
+          || !gsl_finite (loop->last)
           || loop->by == 0.0
           || (loop->by > 0.0 && loop->cur > loop->last)
           || (loop->by < 0.0 && loop->cur < loop->last))
index 21759bbb0946bc1d72e995559816b741cb07fcec..1eda1c0595f463d39ae26d77068fc6760c8c5c9b 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * inpt-pgm.c (reread_trns_proc): Use gsl_finite instead of finite,
+       as a stopgap measure for portability until appropriate gnulib
+       modules are available.
+
 2008-02-06 John Darrington <john@darrington.wattle.id.au>
 
        * get-data.c: Add a /BSIZE subcommand to PSQL reader.
index b8a31eaefd935cf42fea0db5dda2ce8888740ee7..e000a0fd3a2b95772aec8a80371379a38b17ed0c 100644 (file)
@@ -19,6 +19,7 @@
 #include <language/data-io/inpt-pgm.h>
 
 #include <float.h>
+#include <gsl/gsl_math.h>
 #include <stdlib.h>
 
 #include <data/case.h>
@@ -332,7 +333,7 @@ reread_trns_proc (void *t_, struct ccase *c, casenumber case_num)
   else
     {
       double column = expr_evaluate_num (t->column, c, case_num);
-      if (!finite (column) || column < 1)
+      if (!gsl_finite (column) || column < 1)
        {
          msg (SE, _("REREAD: Column numbers must be positive finite "
               "numbers.  Column set to 1."));
index a59accb6b826cd6bee664b1eb77f3dba0f9d452f..18c9441f8ef08207ee428642c4deba4ea2d39fcd 100644 (file)
@@ -1,3 +1,13 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * evaluate.c (expr_evaluate): Use gsl_finite instead of finite, as
+       a stopgap measure for portability until appropriate gnulib modules
+       are available.
+
+       * helpers.h (copy_string): Ditto.
+
 2007-10-12  Ben Pfaff  <blp@gnu.org>
 
        Patch #6224.
index a0a133ad66ebd8d483e97e57c86ecf87b5fef6b9..6402cc0a2a7c6f7d71f9c09fd5fe110532e22cd3 100644 (file)
@@ -18,6 +18,7 @@
 #include "private.h"
 
 #include <ctype.h>
+#include <gsl/gsl_math.h>
 #include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include "helpers.h"
@@ -63,7 +64,7 @@ expr_evaluate (struct expression *e, const struct ccase *c, int case_idx,
           break;
 
         case OP_return_number:
-          *(double *) result = finite (ns[-1]) ? ns[-1] : SYSMIS;
+          *(double *) result = gsl_finite (ns[-1]) ? ns[-1] : SYSMIS;
           return;
 
         case OP_return_string:
index f856da3a99d23c7952549c365ceb249dd08307b7..23ca315a576667eb142b034f5d0589bdbf7a29db 100644 (file)
@@ -4,6 +4,7 @@
 #include <ctype.h>
 #include <float.h>
 #include <gsl/gsl_cdf.h>
+#include <gsl/gsl_math.h>
 #include <gsl/gsl_randist.h>
 #include <gsl/gsl_sf.h>
 #include <limits.h>
@@ -68,7 +69,7 @@ struct substring copy_string (struct expression *,
 static inline bool
 is_valid (double d)
 {
-  return finite (d) && d != SYSMIS;
+  return gsl_finite (d) && d != SYSMIS;
 }
 
 size_t count_valid (double *, size_t);
index fcd88f1e27ed6a01c87d3ad1c0b1397d45c6dbd1..229b4f93c2e62d2ab15b4a941921c245ce22ed83 100644 (file)
@@ -1,3 +1,15 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * hash.c (hsh_hash_int): Use gsl_isnan instead of isnan, as a
+       stopgap measure for portability until appropriate gnulib modules
+       are available.
+
+       * misc.h (macro isinf): Remove implementations of isinf, isnan,
+       and finite, because they were not effective and we are now using
+       the equivalent GSL functions.
+
 2008-03-04  Ben Pfaff  <blp@gnu.org>
 
        Patch #6427.  Reviewed by John Darrington.
index 9da3deb120a92ba0ee3423f78441ad85dd9ab22f..627751e16adcdd8d9dacee018a44741de2c17903 100644 (file)
@@ -20,6 +20,7 @@
 #include "message.h"
 #include <assert.h>
 #include <ctype.h>
+#include <gsl/gsl_math.h>
 #include <limits.h>
 #include <stdbool.h>
 #include <stdlib.h>
@@ -133,7 +134,7 @@ hsh_hash_int (int i)
 unsigned
 hsh_hash_double (double d)
 {
-  if (!isnan (d))
+  if (!gsl_isnan (d))
     return hsh_hash_bytes (&d, sizeof d);
   else
     return 0;
index 69d3dc4f64043ef9e8929b703c3cd711c1e11d98..e33d588fd8c0db6ca722278eb3c77260a6081d82 100644 (file)
 
 #define EPSILON (10 * DBL_EPSILON)
 
-/* HUGE_VAL is traditionally defined as positive infinity, or
-   alternatively, DBL_MAX. */
-#if !HAVE_ISINF && !defined isinf
-#define isinf(X) (fabs (X) == HUGE_VAL)
-#endif
-
-/* A Not a Number is not equal to itself. */
-#if !HAVE_ISNAN && !defined isnan
-#define isnan(X) ((X) != (X))
-#endif
-
-/* Finite numbers are not infinities or NaNs. */
-#if !HAVE_FINITE && !defined finite
-#define finite(X) (!isinf (X) && !isnan (X))
-#elif HAVE_IEEEFP_H
-#include <ieeefp.h>            /* Declares finite() under Solaris. */
-#endif
-
 /* Divides nonnegative X by positive Y, rounding up. */
 #define DIV_RND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
 
index 1d3b95bb944db024c11291cb58f8f40c396457c1..c1cd1a3a9b70dbd94a02b7093664bb237df5e5e4 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * moments.c (calc_moments): Use gsl_finite instead of finite, as a
+       stopgap measure for portability until appropriate gnulib modules
+       are available.
+
 2008-03-10  Jason Stover  <jhs@debs.hoobahooba.net>
 
        * coefficient.c (pspp_linreg_get_coeff): Removed use of
index 084e6d8c8b22f24c469212fec682080c204da6d9..02208bca70d007d1bc9f61f07d518b9b985a621d 100644 (file)
@@ -17,6 +17,7 @@
 #include <config.h>
 #include "moments.h"
 #include <assert.h>
+#include <gsl/gsl_math.h>
 #include <math.h>
 #include <stdlib.h>
 #include <libpspp/misc.h>
@@ -55,7 +56,7 @@ calc_moments (enum moment max_moment,
             {
               double s3 = s2 * sqrt (s2);
               double g1 = (w * d3) / ((w - 1.0) * (w - 2.0) * s3);
-              if (finite (g1))
+              if (gsl_finite (g1))
                 *skewness = g1;
             }
           if (max_moment >= MOMENT_KURTOSIS && kurtosis != NULL && w > 3.)
@@ -63,7 +64,7 @@ calc_moments (enum moment max_moment,
               double den = (w - 2.) * (w - 3.) * pow2 (s2);
               double g2 = (w * (w + 1) * d4 / (w - 1.) / den
                            - 3. * pow2 (d2) / den);
-              if (finite (g2))
+              if (gsl_finite (g2))
                 *kurtosis = g2;
             }
         }