]> granicus.if.org Git - postgresql/blob - src/port/isinf.c
Group cluster_name and update_process_title settings together
[postgresql] / src / port / isinf.c
1 /*-------------------------------------------------------------------------
2  *
3  * isinf.c
4  *
5  * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
6  * Portions Copyright (c) 1994, Regents of the University of California
7  *
8  *
9  * IDENTIFICATION
10  *        src/port/isinf.c
11  *
12  *-------------------------------------------------------------------------
13  */
14
15 #include "c.h"
16
17 #include <float.h>
18 #include <math.h>
19
20 #if HAVE_FPCLASS                                /* this is _not_ HAVE_FP_CLASS, and not typo */
21
22 #if HAVE_IEEEFP_H
23 #include <ieeefp.h>
24 #endif
25 int
26 isinf(double d)
27 {
28         fpclass_t       type = fpclass(d);
29
30         switch (type)
31         {
32                 case FP_NINF:
33                 case FP_PINF:
34                         return 1;
35                 default:
36                         break;
37         }
38         return 0;
39 }
40 #else
41
42 #if defined(HAVE_FP_CLASS) || defined(HAVE_FP_CLASS_D)
43
44 #if HAVE_FP_CLASS_H
45 #include <fp_class.h>
46 #endif
47 int
48 isinf(x)
49 double          x;
50 {
51 #if HAVE_FP_CLASS
52         int                     fpclass = fp_class(x);
53 #else
54         int                     fpclass = fp_class_d(x);
55 #endif
56
57         if (fpclass == FP_POS_INF)
58                 return 1;
59         if (fpclass == FP_NEG_INF)
60                 return -1;
61         return 0;
62 }
63 #elif defined(HAVE_CLASS)
64 int
65 isinf(double x)
66 {
67         int                     fpclass = class(x);
68
69         if (fpclass == FP_PLUS_INF)
70                 return 1;
71         if (fpclass == FP_MINUS_INF)
72                 return -1;
73         return 0;
74 }
75 #endif
76
77 #endif