/src/port/isinf.c
C | 77 lines | 54 code | 10 blank | 13 comment | 10 complexity | d13b9021e27e829f67c49f076cdb3afc MD5 | raw file
Possible License(s): AGPL-3.0
- /*-------------------------------------------------------------------------
- *
- * isinf.c
- *
- * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * src/port/isinf.c
- *
- *-------------------------------------------------------------------------
- */
- #include "c.h"
- #include <float.h>
- #include <math.h>
- #if HAVE_FPCLASS /* this is _not_ HAVE_FP_CLASS, and not typo */
- #if HAVE_IEEEFP_H
- #include <ieeefp.h>
- #endif
- int
- isinf(double d)
- {
- fpclass_t type = fpclass(d);
- switch (type)
- {
- case FP_NINF:
- case FP_PINF:
- return 1;
- default:
- break;
- }
- return 0;
- }
- #else
- #if defined(HAVE_FP_CLASS) || defined(HAVE_FP_CLASS_D)
- #if HAVE_FP_CLASS_H
- #include <fp_class.h>
- #endif
- int
- isinf(x)
- double x;
- {
- #if HAVE_FP_CLASS
- int fpclass = fp_class(x);
- #else
- int fpclass = fp_class_d(x);
- #endif
- if (fpclass == FP_POS_INF)
- return 1;
- if (fpclass == FP_NEG_INF)
- return -1;
- return 0;
- }
- #elif defined(HAVE_CLASS)
- int
- isinf(double x)
- {
- int fpclass = class(x);
- if (fpclass == FP_PLUS_INF)
- return 1;
- if (fpclass == FP_MINUS_INF)
- return -1;
- return 0;
- }
- #endif
- #endif