/src/postgres/src/include/utils/float.h
Line | Count | Source |
1 | | /*------------------------------------------------------------------------- |
2 | | * |
3 | | * float.h |
4 | | * Definitions for the built-in floating-point types |
5 | | * |
6 | | * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group |
7 | | * Portions Copyright (c) 1994, Regents of the University of California |
8 | | * |
9 | | * |
10 | | * IDENTIFICATION |
11 | | * src/include/utils/float.h |
12 | | * |
13 | | *------------------------------------------------------------------------- |
14 | | */ |
15 | | #ifndef FLOAT_H |
16 | | #define FLOAT_H |
17 | | |
18 | | #include <math.h> |
19 | | |
20 | | /* X/Open (XSI) requires <math.h> to provide M_PI, but core POSIX does not */ |
21 | | #ifndef M_PI |
22 | | #define M_PI 3.14159265358979323846 |
23 | | #endif |
24 | | |
25 | | /* Radians per degree, a.k.a. PI / 180 */ |
26 | 0 | #define RADIANS_PER_DEGREE 0.0174532925199432957692 |
27 | | |
28 | | extern PGDLLIMPORT int extra_float_digits; |
29 | | |
30 | | /* |
31 | | * Utility functions in float.c |
32 | | */ |
33 | | pg_noreturn extern void float_overflow_error(void); |
34 | | pg_noreturn extern void float_underflow_error(void); |
35 | | pg_noreturn extern void float_zero_divide_error(void); |
36 | | extern float8 float_overflow_error_ext(struct Node *escontext); |
37 | | extern float8 float_underflow_error_ext(struct Node *escontext); |
38 | | extern float8 float_zero_divide_error_ext(struct Node *escontext); |
39 | | extern int is_infinite(float8 val); |
40 | | extern float8 float8in_internal(char *num, char **endptr_p, |
41 | | const char *type_name, const char *orig_string, |
42 | | struct Node *escontext); |
43 | | extern float4 float4in_internal(char *num, char **endptr_p, |
44 | | const char *type_name, const char *orig_string, |
45 | | struct Node *escontext); |
46 | | extern char *float8out_internal(float8 num); |
47 | | extern int float4_cmp_internal(float4 a, float4 b); |
48 | | extern int float8_cmp_internal(float8 a, float8 b); |
49 | | |
50 | | /* |
51 | | * Postgres requires IEEE-standard float arithmetic, including infinities |
52 | | * and NaNs. We used to support pre-C99 compilers on which <math.h> might |
53 | | * not supply the standard macros INFINITY and NAN. We no longer do so, |
54 | | * but these wrapper functions are still preferred over using those macros |
55 | | * directly. |
56 | | * |
57 | | * If you change these functions, see copies in interfaces/ecpg/ecpglib/data.c. |
58 | | */ |
59 | | |
60 | | static inline float4 |
61 | | get_float4_infinity(void) |
62 | 0 | { |
63 | | /* C99 standard way */ |
64 | 0 | return (float4) INFINITY; |
65 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:get_float4_infinity Unexecuted instantiation: gistget.c:get_float4_infinity Unexecuted instantiation: gistproc.c:get_float4_infinity Unexecuted instantiation: gistscan.c:get_float4_infinity Unexecuted instantiation: gistutil.c:get_float4_infinity Unexecuted instantiation: hashfunc.c:get_float4_infinity Unexecuted instantiation: spgkdtreeproc.c:get_float4_infinity Unexecuted instantiation: spgproc.c:get_float4_infinity Unexecuted instantiation: spgquadtreeproc.c:get_float4_infinity Unexecuted instantiation: spgscan.c:get_float4_infinity Unexecuted instantiation: cash.c:get_float4_infinity Unexecuted instantiation: float.c:get_float4_infinity Unexecuted instantiation: geo_ops.c:get_float4_infinity Unexecuted instantiation: geo_spgist.c:get_float4_infinity Unexecuted instantiation: jsonpath_exec.c:get_float4_infinity Unexecuted instantiation: multirangetypes_selfuncs.c:get_float4_infinity Unexecuted instantiation: numeric.c:get_float4_infinity Unexecuted instantiation: pg_dependencies.c:get_float4_infinity Unexecuted instantiation: rangetypes_gist.c:get_float4_infinity Unexecuted instantiation: rangetypes_selfuncs.c:get_float4_infinity Unexecuted instantiation: rangetypes_typanalyze.c:get_float4_infinity Unexecuted instantiation: timestamp.c:get_float4_infinity Unexecuted instantiation: guc_tables.c:get_float4_infinity |
66 | | |
67 | | static inline float8 |
68 | | get_float8_infinity(void) |
69 | 0 | { |
70 | | /* C99 standard way */ |
71 | 0 | return (float8) INFINITY; |
72 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:get_float8_infinity Unexecuted instantiation: gistget.c:get_float8_infinity Unexecuted instantiation: gistproc.c:get_float8_infinity Unexecuted instantiation: gistscan.c:get_float8_infinity Unexecuted instantiation: gistutil.c:get_float8_infinity Unexecuted instantiation: hashfunc.c:get_float8_infinity Unexecuted instantiation: spgkdtreeproc.c:get_float8_infinity Unexecuted instantiation: spgproc.c:get_float8_infinity Unexecuted instantiation: spgquadtreeproc.c:get_float8_infinity Unexecuted instantiation: spgscan.c:get_float8_infinity Unexecuted instantiation: cash.c:get_float8_infinity Unexecuted instantiation: float.c:get_float8_infinity Unexecuted instantiation: geo_ops.c:get_float8_infinity Unexecuted instantiation: geo_spgist.c:get_float8_infinity Unexecuted instantiation: jsonpath_exec.c:get_float8_infinity Unexecuted instantiation: multirangetypes_selfuncs.c:get_float8_infinity Unexecuted instantiation: numeric.c:get_float8_infinity Unexecuted instantiation: pg_dependencies.c:get_float8_infinity Unexecuted instantiation: rangetypes_gist.c:get_float8_infinity Unexecuted instantiation: rangetypes_selfuncs.c:get_float8_infinity Unexecuted instantiation: rangetypes_typanalyze.c:get_float8_infinity Unexecuted instantiation: timestamp.c:get_float8_infinity Unexecuted instantiation: guc_tables.c:get_float8_infinity |
73 | | |
74 | | /* The C standard allows implementations to omit NAN, but we don't */ |
75 | | #ifndef NAN |
76 | | #error "Postgres requires support for IEEE quiet NaNs" |
77 | | #endif |
78 | | |
79 | | static inline float4 |
80 | | get_float4_nan(void) |
81 | 0 | { |
82 | | /* C99 standard way */ |
83 | 0 | return (float4) NAN; |
84 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:get_float4_nan Unexecuted instantiation: gistget.c:get_float4_nan Unexecuted instantiation: gistproc.c:get_float4_nan Unexecuted instantiation: gistscan.c:get_float4_nan Unexecuted instantiation: gistutil.c:get_float4_nan Unexecuted instantiation: hashfunc.c:get_float4_nan Unexecuted instantiation: spgkdtreeproc.c:get_float4_nan Unexecuted instantiation: spgproc.c:get_float4_nan Unexecuted instantiation: spgquadtreeproc.c:get_float4_nan Unexecuted instantiation: spgscan.c:get_float4_nan Unexecuted instantiation: cash.c:get_float4_nan Unexecuted instantiation: float.c:get_float4_nan Unexecuted instantiation: geo_ops.c:get_float4_nan Unexecuted instantiation: geo_spgist.c:get_float4_nan Unexecuted instantiation: jsonpath_exec.c:get_float4_nan Unexecuted instantiation: multirangetypes_selfuncs.c:get_float4_nan Unexecuted instantiation: numeric.c:get_float4_nan Unexecuted instantiation: pg_dependencies.c:get_float4_nan Unexecuted instantiation: rangetypes_gist.c:get_float4_nan Unexecuted instantiation: rangetypes_selfuncs.c:get_float4_nan Unexecuted instantiation: rangetypes_typanalyze.c:get_float4_nan Unexecuted instantiation: timestamp.c:get_float4_nan Unexecuted instantiation: guc_tables.c:get_float4_nan |
85 | | |
86 | | static inline float8 |
87 | | get_float8_nan(void) |
88 | 0 | { |
89 | | /* C99 standard way */ |
90 | 0 | return (float8) NAN; |
91 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:get_float8_nan Unexecuted instantiation: gistget.c:get_float8_nan Unexecuted instantiation: gistproc.c:get_float8_nan Unexecuted instantiation: gistscan.c:get_float8_nan Unexecuted instantiation: gistutil.c:get_float8_nan Unexecuted instantiation: hashfunc.c:get_float8_nan Unexecuted instantiation: spgkdtreeproc.c:get_float8_nan Unexecuted instantiation: spgproc.c:get_float8_nan Unexecuted instantiation: spgquadtreeproc.c:get_float8_nan Unexecuted instantiation: spgscan.c:get_float8_nan Unexecuted instantiation: cash.c:get_float8_nan Unexecuted instantiation: float.c:get_float8_nan Unexecuted instantiation: geo_ops.c:get_float8_nan Unexecuted instantiation: geo_spgist.c:get_float8_nan Unexecuted instantiation: jsonpath_exec.c:get_float8_nan Unexecuted instantiation: multirangetypes_selfuncs.c:get_float8_nan Unexecuted instantiation: numeric.c:get_float8_nan Unexecuted instantiation: pg_dependencies.c:get_float8_nan Unexecuted instantiation: rangetypes_gist.c:get_float8_nan Unexecuted instantiation: rangetypes_selfuncs.c:get_float8_nan Unexecuted instantiation: rangetypes_typanalyze.c:get_float8_nan Unexecuted instantiation: timestamp.c:get_float8_nan Unexecuted instantiation: guc_tables.c:get_float8_nan |
92 | | |
93 | | /* |
94 | | * Floating-point arithmetic with overflow/underflow reported as errors |
95 | | * |
96 | | * There isn't any way to check for underflow of addition/subtraction |
97 | | * because numbers near the underflow value have already been rounded to |
98 | | * the point where we can't detect that the two values were originally |
99 | | * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == |
100 | | * 1.4013e-45. |
101 | | */ |
102 | | |
103 | | static inline float4 |
104 | | float4_pl(const float4 val1, const float4 val2) |
105 | 0 | { |
106 | 0 | float4 result; |
107 | |
|
108 | 0 | result = val1 + val2; |
109 | 0 | if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) |
110 | 0 | float_overflow_error(); |
111 | |
|
112 | 0 | return result; |
113 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_pl Unexecuted instantiation: gistget.c:float4_pl Unexecuted instantiation: gistproc.c:float4_pl Unexecuted instantiation: gistscan.c:float4_pl Unexecuted instantiation: gistutil.c:float4_pl Unexecuted instantiation: hashfunc.c:float4_pl Unexecuted instantiation: spgkdtreeproc.c:float4_pl Unexecuted instantiation: spgproc.c:float4_pl Unexecuted instantiation: spgquadtreeproc.c:float4_pl Unexecuted instantiation: spgscan.c:float4_pl Unexecuted instantiation: cash.c:float4_pl Unexecuted instantiation: float.c:float4_pl Unexecuted instantiation: geo_ops.c:float4_pl Unexecuted instantiation: geo_spgist.c:float4_pl Unexecuted instantiation: jsonpath_exec.c:float4_pl Unexecuted instantiation: multirangetypes_selfuncs.c:float4_pl Unexecuted instantiation: numeric.c:float4_pl Unexecuted instantiation: pg_dependencies.c:float4_pl Unexecuted instantiation: rangetypes_gist.c:float4_pl Unexecuted instantiation: rangetypes_selfuncs.c:float4_pl Unexecuted instantiation: rangetypes_typanalyze.c:float4_pl Unexecuted instantiation: timestamp.c:float4_pl Unexecuted instantiation: guc_tables.c:float4_pl |
114 | | |
115 | | static inline float8 |
116 | | float8_pl_safe(const float8 val1, const float8 val2, struct Node *escontext) |
117 | 0 | { |
118 | 0 | float8 result; |
119 | |
|
120 | 0 | result = val1 + val2; |
121 | 0 | if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) |
122 | 0 | return float_overflow_error_ext(escontext); |
123 | | |
124 | 0 | return result; |
125 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_pl_safe Unexecuted instantiation: gistget.c:float8_pl_safe Unexecuted instantiation: gistproc.c:float8_pl_safe Unexecuted instantiation: gistscan.c:float8_pl_safe Unexecuted instantiation: gistutil.c:float8_pl_safe Unexecuted instantiation: hashfunc.c:float8_pl_safe Unexecuted instantiation: spgkdtreeproc.c:float8_pl_safe Unexecuted instantiation: spgproc.c:float8_pl_safe Unexecuted instantiation: spgquadtreeproc.c:float8_pl_safe Unexecuted instantiation: spgscan.c:float8_pl_safe Unexecuted instantiation: cash.c:float8_pl_safe Unexecuted instantiation: float.c:float8_pl_safe Unexecuted instantiation: geo_ops.c:float8_pl_safe Unexecuted instantiation: geo_spgist.c:float8_pl_safe Unexecuted instantiation: jsonpath_exec.c:float8_pl_safe Unexecuted instantiation: multirangetypes_selfuncs.c:float8_pl_safe Unexecuted instantiation: numeric.c:float8_pl_safe Unexecuted instantiation: pg_dependencies.c:float8_pl_safe Unexecuted instantiation: rangetypes_gist.c:float8_pl_safe Unexecuted instantiation: rangetypes_selfuncs.c:float8_pl_safe Unexecuted instantiation: rangetypes_typanalyze.c:float8_pl_safe Unexecuted instantiation: timestamp.c:float8_pl_safe Unexecuted instantiation: guc_tables.c:float8_pl_safe |
126 | | |
127 | | static inline float8 |
128 | | float8_pl(const float8 val1, const float8 val2) |
129 | 0 | { |
130 | 0 | return float8_pl_safe(val1, val2, NULL); |
131 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_pl Unexecuted instantiation: gistget.c:float8_pl Unexecuted instantiation: gistproc.c:float8_pl Unexecuted instantiation: gistscan.c:float8_pl Unexecuted instantiation: gistutil.c:float8_pl Unexecuted instantiation: hashfunc.c:float8_pl Unexecuted instantiation: spgkdtreeproc.c:float8_pl Unexecuted instantiation: spgproc.c:float8_pl Unexecuted instantiation: spgquadtreeproc.c:float8_pl Unexecuted instantiation: spgscan.c:float8_pl Unexecuted instantiation: cash.c:float8_pl Unexecuted instantiation: float.c:float8_pl Unexecuted instantiation: geo_ops.c:float8_pl Unexecuted instantiation: geo_spgist.c:float8_pl Unexecuted instantiation: jsonpath_exec.c:float8_pl Unexecuted instantiation: multirangetypes_selfuncs.c:float8_pl Unexecuted instantiation: numeric.c:float8_pl Unexecuted instantiation: pg_dependencies.c:float8_pl Unexecuted instantiation: rangetypes_gist.c:float8_pl Unexecuted instantiation: rangetypes_selfuncs.c:float8_pl Unexecuted instantiation: rangetypes_typanalyze.c:float8_pl Unexecuted instantiation: timestamp.c:float8_pl Unexecuted instantiation: guc_tables.c:float8_pl |
132 | | |
133 | | static inline float4 |
134 | | float4_mi(const float4 val1, const float4 val2) |
135 | 0 | { |
136 | 0 | float4 result; |
137 | |
|
138 | 0 | result = val1 - val2; |
139 | 0 | if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) |
140 | 0 | float_overflow_error(); |
141 | |
|
142 | 0 | return result; |
143 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_mi Unexecuted instantiation: gistget.c:float4_mi Unexecuted instantiation: gistproc.c:float4_mi Unexecuted instantiation: gistscan.c:float4_mi Unexecuted instantiation: gistutil.c:float4_mi Unexecuted instantiation: hashfunc.c:float4_mi Unexecuted instantiation: spgkdtreeproc.c:float4_mi Unexecuted instantiation: spgproc.c:float4_mi Unexecuted instantiation: spgquadtreeproc.c:float4_mi Unexecuted instantiation: spgscan.c:float4_mi Unexecuted instantiation: cash.c:float4_mi Unexecuted instantiation: float.c:float4_mi Unexecuted instantiation: geo_ops.c:float4_mi Unexecuted instantiation: geo_spgist.c:float4_mi Unexecuted instantiation: jsonpath_exec.c:float4_mi Unexecuted instantiation: multirangetypes_selfuncs.c:float4_mi Unexecuted instantiation: numeric.c:float4_mi Unexecuted instantiation: pg_dependencies.c:float4_mi Unexecuted instantiation: rangetypes_gist.c:float4_mi Unexecuted instantiation: rangetypes_selfuncs.c:float4_mi Unexecuted instantiation: rangetypes_typanalyze.c:float4_mi Unexecuted instantiation: timestamp.c:float4_mi Unexecuted instantiation: guc_tables.c:float4_mi |
144 | | |
145 | | static inline float8 |
146 | | float8_mi_safe(const float8 val1, const float8 val2, struct Node *escontext) |
147 | 0 | { |
148 | 0 | float8 result; |
149 | |
|
150 | 0 | result = val1 - val2; |
151 | 0 | if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) |
152 | 0 | return float_overflow_error_ext(escontext); |
153 | | |
154 | 0 | return result; |
155 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_mi_safe Unexecuted instantiation: gistget.c:float8_mi_safe Unexecuted instantiation: gistproc.c:float8_mi_safe Unexecuted instantiation: gistscan.c:float8_mi_safe Unexecuted instantiation: gistutil.c:float8_mi_safe Unexecuted instantiation: hashfunc.c:float8_mi_safe Unexecuted instantiation: spgkdtreeproc.c:float8_mi_safe Unexecuted instantiation: spgproc.c:float8_mi_safe Unexecuted instantiation: spgquadtreeproc.c:float8_mi_safe Unexecuted instantiation: spgscan.c:float8_mi_safe Unexecuted instantiation: cash.c:float8_mi_safe Unexecuted instantiation: float.c:float8_mi_safe Unexecuted instantiation: geo_ops.c:float8_mi_safe Unexecuted instantiation: geo_spgist.c:float8_mi_safe Unexecuted instantiation: jsonpath_exec.c:float8_mi_safe Unexecuted instantiation: multirangetypes_selfuncs.c:float8_mi_safe Unexecuted instantiation: numeric.c:float8_mi_safe Unexecuted instantiation: pg_dependencies.c:float8_mi_safe Unexecuted instantiation: rangetypes_gist.c:float8_mi_safe Unexecuted instantiation: rangetypes_selfuncs.c:float8_mi_safe Unexecuted instantiation: rangetypes_typanalyze.c:float8_mi_safe Unexecuted instantiation: timestamp.c:float8_mi_safe Unexecuted instantiation: guc_tables.c:float8_mi_safe |
156 | | |
157 | | static inline float8 |
158 | | float8_mi(const float8 val1, const float8 val2) |
159 | 0 | { |
160 | 0 | return float8_mi_safe(val1, val2, NULL); |
161 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_mi Unexecuted instantiation: gistget.c:float8_mi Unexecuted instantiation: gistproc.c:float8_mi Unexecuted instantiation: gistscan.c:float8_mi Unexecuted instantiation: gistutil.c:float8_mi Unexecuted instantiation: hashfunc.c:float8_mi Unexecuted instantiation: spgkdtreeproc.c:float8_mi Unexecuted instantiation: spgproc.c:float8_mi Unexecuted instantiation: spgquadtreeproc.c:float8_mi Unexecuted instantiation: spgscan.c:float8_mi Unexecuted instantiation: cash.c:float8_mi Unexecuted instantiation: float.c:float8_mi Unexecuted instantiation: geo_ops.c:float8_mi Unexecuted instantiation: geo_spgist.c:float8_mi Unexecuted instantiation: jsonpath_exec.c:float8_mi Unexecuted instantiation: multirangetypes_selfuncs.c:float8_mi Unexecuted instantiation: numeric.c:float8_mi Unexecuted instantiation: pg_dependencies.c:float8_mi Unexecuted instantiation: rangetypes_gist.c:float8_mi Unexecuted instantiation: rangetypes_selfuncs.c:float8_mi Unexecuted instantiation: rangetypes_typanalyze.c:float8_mi Unexecuted instantiation: timestamp.c:float8_mi Unexecuted instantiation: guc_tables.c:float8_mi |
162 | | |
163 | | static inline float4 |
164 | | float4_mul(const float4 val1, const float4 val2) |
165 | 0 | { |
166 | 0 | float4 result; |
167 | |
|
168 | 0 | result = val1 * val2; |
169 | 0 | if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) |
170 | 0 | float_overflow_error(); |
171 | 0 | if (unlikely(result == 0.0f) && val1 != 0.0f && val2 != 0.0f) |
172 | 0 | float_underflow_error(); |
173 | |
|
174 | 0 | return result; |
175 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_mul Unexecuted instantiation: gistget.c:float4_mul Unexecuted instantiation: gistproc.c:float4_mul Unexecuted instantiation: gistscan.c:float4_mul Unexecuted instantiation: gistutil.c:float4_mul Unexecuted instantiation: hashfunc.c:float4_mul Unexecuted instantiation: spgkdtreeproc.c:float4_mul Unexecuted instantiation: spgproc.c:float4_mul Unexecuted instantiation: spgquadtreeproc.c:float4_mul Unexecuted instantiation: spgscan.c:float4_mul Unexecuted instantiation: cash.c:float4_mul Unexecuted instantiation: float.c:float4_mul Unexecuted instantiation: geo_ops.c:float4_mul Unexecuted instantiation: geo_spgist.c:float4_mul Unexecuted instantiation: jsonpath_exec.c:float4_mul Unexecuted instantiation: multirangetypes_selfuncs.c:float4_mul Unexecuted instantiation: numeric.c:float4_mul Unexecuted instantiation: pg_dependencies.c:float4_mul Unexecuted instantiation: rangetypes_gist.c:float4_mul Unexecuted instantiation: rangetypes_selfuncs.c:float4_mul Unexecuted instantiation: rangetypes_typanalyze.c:float4_mul Unexecuted instantiation: timestamp.c:float4_mul Unexecuted instantiation: guc_tables.c:float4_mul |
176 | | |
177 | | static inline float8 |
178 | | float8_mul_safe(const float8 val1, const float8 val2, struct Node *escontext) |
179 | 0 | { |
180 | 0 | float8 result; |
181 | |
|
182 | 0 | result = val1 * val2; |
183 | 0 | if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) |
184 | 0 | return float_overflow_error_ext(escontext); |
185 | 0 | if (unlikely(result == 0.0) && val1 != 0.0 && val2 != 0.0) |
186 | 0 | return float_underflow_error_ext(escontext); |
187 | | |
188 | 0 | return result; |
189 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_mul_safe Unexecuted instantiation: gistget.c:float8_mul_safe Unexecuted instantiation: gistproc.c:float8_mul_safe Unexecuted instantiation: gistscan.c:float8_mul_safe Unexecuted instantiation: gistutil.c:float8_mul_safe Unexecuted instantiation: hashfunc.c:float8_mul_safe Unexecuted instantiation: spgkdtreeproc.c:float8_mul_safe Unexecuted instantiation: spgproc.c:float8_mul_safe Unexecuted instantiation: spgquadtreeproc.c:float8_mul_safe Unexecuted instantiation: spgscan.c:float8_mul_safe Unexecuted instantiation: cash.c:float8_mul_safe Unexecuted instantiation: float.c:float8_mul_safe Unexecuted instantiation: geo_ops.c:float8_mul_safe Unexecuted instantiation: geo_spgist.c:float8_mul_safe Unexecuted instantiation: jsonpath_exec.c:float8_mul_safe Unexecuted instantiation: multirangetypes_selfuncs.c:float8_mul_safe Unexecuted instantiation: numeric.c:float8_mul_safe Unexecuted instantiation: pg_dependencies.c:float8_mul_safe Unexecuted instantiation: rangetypes_gist.c:float8_mul_safe Unexecuted instantiation: rangetypes_selfuncs.c:float8_mul_safe Unexecuted instantiation: rangetypes_typanalyze.c:float8_mul_safe Unexecuted instantiation: timestamp.c:float8_mul_safe Unexecuted instantiation: guc_tables.c:float8_mul_safe |
190 | | |
191 | | static inline float8 |
192 | | float8_mul(const float8 val1, const float8 val2) |
193 | 0 | { |
194 | 0 | return float8_mul_safe(val1, val2, NULL); |
195 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_mul Unexecuted instantiation: gistget.c:float8_mul Unexecuted instantiation: gistproc.c:float8_mul Unexecuted instantiation: gistscan.c:float8_mul Unexecuted instantiation: gistutil.c:float8_mul Unexecuted instantiation: hashfunc.c:float8_mul Unexecuted instantiation: spgkdtreeproc.c:float8_mul Unexecuted instantiation: spgproc.c:float8_mul Unexecuted instantiation: spgquadtreeproc.c:float8_mul Unexecuted instantiation: spgscan.c:float8_mul Unexecuted instantiation: cash.c:float8_mul Unexecuted instantiation: float.c:float8_mul Unexecuted instantiation: geo_ops.c:float8_mul Unexecuted instantiation: geo_spgist.c:float8_mul Unexecuted instantiation: jsonpath_exec.c:float8_mul Unexecuted instantiation: multirangetypes_selfuncs.c:float8_mul Unexecuted instantiation: numeric.c:float8_mul Unexecuted instantiation: pg_dependencies.c:float8_mul Unexecuted instantiation: rangetypes_gist.c:float8_mul Unexecuted instantiation: rangetypes_selfuncs.c:float8_mul Unexecuted instantiation: rangetypes_typanalyze.c:float8_mul Unexecuted instantiation: timestamp.c:float8_mul Unexecuted instantiation: guc_tables.c:float8_mul |
196 | | |
197 | | static inline float4 |
198 | | float4_div(const float4 val1, const float4 val2) |
199 | 0 | { |
200 | 0 | float4 result; |
201 | |
|
202 | 0 | if (unlikely(val2 == 0.0f) && !isnan(val1)) |
203 | 0 | float_zero_divide_error(); |
204 | 0 | result = val1 / val2; |
205 | 0 | if (unlikely(isinf(result)) && !isinf(val1)) |
206 | 0 | float_overflow_error(); |
207 | 0 | if (unlikely(result == 0.0f) && val1 != 0.0f && !isinf(val2)) |
208 | 0 | float_underflow_error(); |
209 | |
|
210 | 0 | return result; |
211 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_div Unexecuted instantiation: gistget.c:float4_div Unexecuted instantiation: gistproc.c:float4_div Unexecuted instantiation: gistscan.c:float4_div Unexecuted instantiation: gistutil.c:float4_div Unexecuted instantiation: hashfunc.c:float4_div Unexecuted instantiation: spgkdtreeproc.c:float4_div Unexecuted instantiation: spgproc.c:float4_div Unexecuted instantiation: spgquadtreeproc.c:float4_div Unexecuted instantiation: spgscan.c:float4_div Unexecuted instantiation: cash.c:float4_div Unexecuted instantiation: float.c:float4_div Unexecuted instantiation: geo_ops.c:float4_div Unexecuted instantiation: geo_spgist.c:float4_div Unexecuted instantiation: jsonpath_exec.c:float4_div Unexecuted instantiation: multirangetypes_selfuncs.c:float4_div Unexecuted instantiation: numeric.c:float4_div Unexecuted instantiation: pg_dependencies.c:float4_div Unexecuted instantiation: rangetypes_gist.c:float4_div Unexecuted instantiation: rangetypes_selfuncs.c:float4_div Unexecuted instantiation: rangetypes_typanalyze.c:float4_div Unexecuted instantiation: timestamp.c:float4_div Unexecuted instantiation: guc_tables.c:float4_div |
212 | | |
213 | | static inline float8 |
214 | | float8_div_safe(const float8 val1, const float8 val2, struct Node *escontext) |
215 | 0 | { |
216 | 0 | float8 result; |
217 | |
|
218 | 0 | if (unlikely(val2 == 0.0) && !isnan(val1)) |
219 | 0 | return float_zero_divide_error_ext(escontext); |
220 | 0 | result = val1 / val2; |
221 | 0 | if (unlikely(isinf(result)) && !isinf(val1)) |
222 | 0 | return float_overflow_error_ext(escontext); |
223 | 0 | if (unlikely(result == 0.0) && val1 != 0.0 && !isinf(val2)) |
224 | 0 | return float_underflow_error_ext(escontext); |
225 | | |
226 | 0 | return result; |
227 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_div_safe Unexecuted instantiation: gistget.c:float8_div_safe Unexecuted instantiation: gistproc.c:float8_div_safe Unexecuted instantiation: gistscan.c:float8_div_safe Unexecuted instantiation: gistutil.c:float8_div_safe Unexecuted instantiation: hashfunc.c:float8_div_safe Unexecuted instantiation: spgkdtreeproc.c:float8_div_safe Unexecuted instantiation: spgproc.c:float8_div_safe Unexecuted instantiation: spgquadtreeproc.c:float8_div_safe Unexecuted instantiation: spgscan.c:float8_div_safe Unexecuted instantiation: cash.c:float8_div_safe Unexecuted instantiation: float.c:float8_div_safe Unexecuted instantiation: geo_ops.c:float8_div_safe Unexecuted instantiation: geo_spgist.c:float8_div_safe Unexecuted instantiation: jsonpath_exec.c:float8_div_safe Unexecuted instantiation: multirangetypes_selfuncs.c:float8_div_safe Unexecuted instantiation: numeric.c:float8_div_safe Unexecuted instantiation: pg_dependencies.c:float8_div_safe Unexecuted instantiation: rangetypes_gist.c:float8_div_safe Unexecuted instantiation: rangetypes_selfuncs.c:float8_div_safe Unexecuted instantiation: rangetypes_typanalyze.c:float8_div_safe Unexecuted instantiation: timestamp.c:float8_div_safe Unexecuted instantiation: guc_tables.c:float8_div_safe |
228 | | |
229 | | static inline float8 |
230 | | float8_div(const float8 val1, const float8 val2) |
231 | 0 | { |
232 | 0 | return float8_div_safe(val1, val2, NULL); |
233 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_div Unexecuted instantiation: gistget.c:float8_div Unexecuted instantiation: gistproc.c:float8_div Unexecuted instantiation: gistscan.c:float8_div Unexecuted instantiation: gistutil.c:float8_div Unexecuted instantiation: hashfunc.c:float8_div Unexecuted instantiation: spgkdtreeproc.c:float8_div Unexecuted instantiation: spgproc.c:float8_div Unexecuted instantiation: spgquadtreeproc.c:float8_div Unexecuted instantiation: spgscan.c:float8_div Unexecuted instantiation: cash.c:float8_div Unexecuted instantiation: float.c:float8_div Unexecuted instantiation: geo_ops.c:float8_div Unexecuted instantiation: geo_spgist.c:float8_div Unexecuted instantiation: jsonpath_exec.c:float8_div Unexecuted instantiation: multirangetypes_selfuncs.c:float8_div Unexecuted instantiation: numeric.c:float8_div Unexecuted instantiation: pg_dependencies.c:float8_div Unexecuted instantiation: rangetypes_gist.c:float8_div Unexecuted instantiation: rangetypes_selfuncs.c:float8_div Unexecuted instantiation: rangetypes_typanalyze.c:float8_div Unexecuted instantiation: timestamp.c:float8_div Unexecuted instantiation: guc_tables.c:float8_div |
234 | | |
235 | | /* |
236 | | * Routines for NaN-aware comparisons |
237 | | * |
238 | | * We consider all NaNs to be equal and larger than any non-NaN. This is |
239 | | * somewhat arbitrary; the important thing is to have a consistent sort |
240 | | * order. |
241 | | */ |
242 | | |
243 | | static inline bool |
244 | | float4_eq(const float4 val1, const float4 val2) |
245 | 0 | { |
246 | 0 | return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2; |
247 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_eq Unexecuted instantiation: gistget.c:float4_eq Unexecuted instantiation: gistproc.c:float4_eq Unexecuted instantiation: gistscan.c:float4_eq Unexecuted instantiation: gistutil.c:float4_eq Unexecuted instantiation: hashfunc.c:float4_eq Unexecuted instantiation: spgkdtreeproc.c:float4_eq Unexecuted instantiation: spgproc.c:float4_eq Unexecuted instantiation: spgquadtreeproc.c:float4_eq Unexecuted instantiation: spgscan.c:float4_eq Unexecuted instantiation: cash.c:float4_eq Unexecuted instantiation: float.c:float4_eq Unexecuted instantiation: geo_ops.c:float4_eq Unexecuted instantiation: geo_spgist.c:float4_eq Unexecuted instantiation: jsonpath_exec.c:float4_eq Unexecuted instantiation: multirangetypes_selfuncs.c:float4_eq Unexecuted instantiation: numeric.c:float4_eq Unexecuted instantiation: pg_dependencies.c:float4_eq Unexecuted instantiation: rangetypes_gist.c:float4_eq Unexecuted instantiation: rangetypes_selfuncs.c:float4_eq Unexecuted instantiation: rangetypes_typanalyze.c:float4_eq Unexecuted instantiation: timestamp.c:float4_eq Unexecuted instantiation: guc_tables.c:float4_eq |
248 | | |
249 | | static inline bool |
250 | | float8_eq(const float8 val1, const float8 val2) |
251 | 0 | { |
252 | 0 | return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2; |
253 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_eq Unexecuted instantiation: gistget.c:float8_eq Unexecuted instantiation: gistproc.c:float8_eq Unexecuted instantiation: gistscan.c:float8_eq Unexecuted instantiation: gistutil.c:float8_eq Unexecuted instantiation: hashfunc.c:float8_eq Unexecuted instantiation: spgkdtreeproc.c:float8_eq Unexecuted instantiation: spgproc.c:float8_eq Unexecuted instantiation: spgquadtreeproc.c:float8_eq Unexecuted instantiation: spgscan.c:float8_eq Unexecuted instantiation: cash.c:float8_eq Unexecuted instantiation: float.c:float8_eq Unexecuted instantiation: geo_ops.c:float8_eq Unexecuted instantiation: geo_spgist.c:float8_eq Unexecuted instantiation: jsonpath_exec.c:float8_eq Unexecuted instantiation: multirangetypes_selfuncs.c:float8_eq Unexecuted instantiation: numeric.c:float8_eq Unexecuted instantiation: pg_dependencies.c:float8_eq Unexecuted instantiation: rangetypes_gist.c:float8_eq Unexecuted instantiation: rangetypes_selfuncs.c:float8_eq Unexecuted instantiation: rangetypes_typanalyze.c:float8_eq Unexecuted instantiation: timestamp.c:float8_eq Unexecuted instantiation: guc_tables.c:float8_eq |
254 | | |
255 | | static inline bool |
256 | | float4_ne(const float4 val1, const float4 val2) |
257 | 0 | { |
258 | 0 | return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2; |
259 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_ne Unexecuted instantiation: gistget.c:float4_ne Unexecuted instantiation: gistproc.c:float4_ne Unexecuted instantiation: gistscan.c:float4_ne Unexecuted instantiation: gistutil.c:float4_ne Unexecuted instantiation: hashfunc.c:float4_ne Unexecuted instantiation: spgkdtreeproc.c:float4_ne Unexecuted instantiation: spgproc.c:float4_ne Unexecuted instantiation: spgquadtreeproc.c:float4_ne Unexecuted instantiation: spgscan.c:float4_ne Unexecuted instantiation: cash.c:float4_ne Unexecuted instantiation: float.c:float4_ne Unexecuted instantiation: geo_ops.c:float4_ne Unexecuted instantiation: geo_spgist.c:float4_ne Unexecuted instantiation: jsonpath_exec.c:float4_ne Unexecuted instantiation: multirangetypes_selfuncs.c:float4_ne Unexecuted instantiation: numeric.c:float4_ne Unexecuted instantiation: pg_dependencies.c:float4_ne Unexecuted instantiation: rangetypes_gist.c:float4_ne Unexecuted instantiation: rangetypes_selfuncs.c:float4_ne Unexecuted instantiation: rangetypes_typanalyze.c:float4_ne Unexecuted instantiation: timestamp.c:float4_ne Unexecuted instantiation: guc_tables.c:float4_ne |
260 | | |
261 | | static inline bool |
262 | | float8_ne(const float8 val1, const float8 val2) |
263 | 0 | { |
264 | 0 | return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2; |
265 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_ne Unexecuted instantiation: gistget.c:float8_ne Unexecuted instantiation: gistproc.c:float8_ne Unexecuted instantiation: gistscan.c:float8_ne Unexecuted instantiation: gistutil.c:float8_ne Unexecuted instantiation: hashfunc.c:float8_ne Unexecuted instantiation: spgkdtreeproc.c:float8_ne Unexecuted instantiation: spgproc.c:float8_ne Unexecuted instantiation: spgquadtreeproc.c:float8_ne Unexecuted instantiation: spgscan.c:float8_ne Unexecuted instantiation: cash.c:float8_ne Unexecuted instantiation: float.c:float8_ne Unexecuted instantiation: geo_ops.c:float8_ne Unexecuted instantiation: geo_spgist.c:float8_ne Unexecuted instantiation: jsonpath_exec.c:float8_ne Unexecuted instantiation: multirangetypes_selfuncs.c:float8_ne Unexecuted instantiation: numeric.c:float8_ne Unexecuted instantiation: pg_dependencies.c:float8_ne Unexecuted instantiation: rangetypes_gist.c:float8_ne Unexecuted instantiation: rangetypes_selfuncs.c:float8_ne Unexecuted instantiation: rangetypes_typanalyze.c:float8_ne Unexecuted instantiation: timestamp.c:float8_ne Unexecuted instantiation: guc_tables.c:float8_ne |
266 | | |
267 | | static inline bool |
268 | | float4_lt(const float4 val1, const float4 val2) |
269 | 0 | { |
270 | 0 | return !isnan(val1) && (isnan(val2) || val1 < val2); |
271 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_lt Unexecuted instantiation: gistget.c:float4_lt Unexecuted instantiation: gistproc.c:float4_lt Unexecuted instantiation: gistscan.c:float4_lt Unexecuted instantiation: gistutil.c:float4_lt Unexecuted instantiation: hashfunc.c:float4_lt Unexecuted instantiation: spgkdtreeproc.c:float4_lt Unexecuted instantiation: spgproc.c:float4_lt Unexecuted instantiation: spgquadtreeproc.c:float4_lt Unexecuted instantiation: spgscan.c:float4_lt Unexecuted instantiation: cash.c:float4_lt Unexecuted instantiation: float.c:float4_lt Unexecuted instantiation: geo_ops.c:float4_lt Unexecuted instantiation: geo_spgist.c:float4_lt Unexecuted instantiation: jsonpath_exec.c:float4_lt Unexecuted instantiation: multirangetypes_selfuncs.c:float4_lt Unexecuted instantiation: numeric.c:float4_lt Unexecuted instantiation: pg_dependencies.c:float4_lt Unexecuted instantiation: rangetypes_gist.c:float4_lt Unexecuted instantiation: rangetypes_selfuncs.c:float4_lt Unexecuted instantiation: rangetypes_typanalyze.c:float4_lt Unexecuted instantiation: timestamp.c:float4_lt Unexecuted instantiation: guc_tables.c:float4_lt |
272 | | |
273 | | static inline bool |
274 | | float8_lt(const float8 val1, const float8 val2) |
275 | 0 | { |
276 | 0 | return !isnan(val1) && (isnan(val2) || val1 < val2); |
277 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_lt Unexecuted instantiation: gistget.c:float8_lt Unexecuted instantiation: gistproc.c:float8_lt Unexecuted instantiation: gistscan.c:float8_lt Unexecuted instantiation: gistutil.c:float8_lt Unexecuted instantiation: hashfunc.c:float8_lt Unexecuted instantiation: spgkdtreeproc.c:float8_lt Unexecuted instantiation: spgproc.c:float8_lt Unexecuted instantiation: spgquadtreeproc.c:float8_lt Unexecuted instantiation: spgscan.c:float8_lt Unexecuted instantiation: cash.c:float8_lt Unexecuted instantiation: float.c:float8_lt Unexecuted instantiation: geo_ops.c:float8_lt Unexecuted instantiation: geo_spgist.c:float8_lt Unexecuted instantiation: jsonpath_exec.c:float8_lt Unexecuted instantiation: multirangetypes_selfuncs.c:float8_lt Unexecuted instantiation: numeric.c:float8_lt Unexecuted instantiation: pg_dependencies.c:float8_lt Unexecuted instantiation: rangetypes_gist.c:float8_lt Unexecuted instantiation: rangetypes_selfuncs.c:float8_lt Unexecuted instantiation: rangetypes_typanalyze.c:float8_lt Unexecuted instantiation: timestamp.c:float8_lt Unexecuted instantiation: guc_tables.c:float8_lt |
278 | | |
279 | | static inline bool |
280 | | float4_le(const float4 val1, const float4 val2) |
281 | 0 | { |
282 | 0 | return isnan(val2) || (!isnan(val1) && val1 <= val2); |
283 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_le Unexecuted instantiation: gistget.c:float4_le Unexecuted instantiation: gistproc.c:float4_le Unexecuted instantiation: gistscan.c:float4_le Unexecuted instantiation: gistutil.c:float4_le Unexecuted instantiation: hashfunc.c:float4_le Unexecuted instantiation: spgkdtreeproc.c:float4_le Unexecuted instantiation: spgproc.c:float4_le Unexecuted instantiation: spgquadtreeproc.c:float4_le Unexecuted instantiation: spgscan.c:float4_le Unexecuted instantiation: cash.c:float4_le Unexecuted instantiation: float.c:float4_le Unexecuted instantiation: geo_ops.c:float4_le Unexecuted instantiation: geo_spgist.c:float4_le Unexecuted instantiation: jsonpath_exec.c:float4_le Unexecuted instantiation: multirangetypes_selfuncs.c:float4_le Unexecuted instantiation: numeric.c:float4_le Unexecuted instantiation: pg_dependencies.c:float4_le Unexecuted instantiation: rangetypes_gist.c:float4_le Unexecuted instantiation: rangetypes_selfuncs.c:float4_le Unexecuted instantiation: rangetypes_typanalyze.c:float4_le Unexecuted instantiation: timestamp.c:float4_le Unexecuted instantiation: guc_tables.c:float4_le |
284 | | |
285 | | static inline bool |
286 | | float8_le(const float8 val1, const float8 val2) |
287 | 0 | { |
288 | 0 | return isnan(val2) || (!isnan(val1) && val1 <= val2); |
289 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_le Unexecuted instantiation: gistget.c:float8_le Unexecuted instantiation: gistproc.c:float8_le Unexecuted instantiation: gistscan.c:float8_le Unexecuted instantiation: gistutil.c:float8_le Unexecuted instantiation: hashfunc.c:float8_le Unexecuted instantiation: spgkdtreeproc.c:float8_le Unexecuted instantiation: spgproc.c:float8_le Unexecuted instantiation: spgquadtreeproc.c:float8_le Unexecuted instantiation: spgscan.c:float8_le Unexecuted instantiation: cash.c:float8_le Unexecuted instantiation: float.c:float8_le Unexecuted instantiation: geo_ops.c:float8_le Unexecuted instantiation: geo_spgist.c:float8_le Unexecuted instantiation: jsonpath_exec.c:float8_le Unexecuted instantiation: multirangetypes_selfuncs.c:float8_le Unexecuted instantiation: numeric.c:float8_le Unexecuted instantiation: pg_dependencies.c:float8_le Unexecuted instantiation: rangetypes_gist.c:float8_le Unexecuted instantiation: rangetypes_selfuncs.c:float8_le Unexecuted instantiation: rangetypes_typanalyze.c:float8_le Unexecuted instantiation: timestamp.c:float8_le Unexecuted instantiation: guc_tables.c:float8_le |
290 | | |
291 | | static inline bool |
292 | | float4_gt(const float4 val1, const float4 val2) |
293 | 0 | { |
294 | 0 | return !isnan(val2) && (isnan(val1) || val1 > val2); |
295 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_gt Unexecuted instantiation: gistget.c:float4_gt Unexecuted instantiation: gistproc.c:float4_gt Unexecuted instantiation: gistscan.c:float4_gt Unexecuted instantiation: gistutil.c:float4_gt Unexecuted instantiation: hashfunc.c:float4_gt Unexecuted instantiation: spgkdtreeproc.c:float4_gt Unexecuted instantiation: spgproc.c:float4_gt Unexecuted instantiation: spgquadtreeproc.c:float4_gt Unexecuted instantiation: spgscan.c:float4_gt Unexecuted instantiation: cash.c:float4_gt Unexecuted instantiation: float.c:float4_gt Unexecuted instantiation: geo_ops.c:float4_gt Unexecuted instantiation: geo_spgist.c:float4_gt Unexecuted instantiation: jsonpath_exec.c:float4_gt Unexecuted instantiation: multirangetypes_selfuncs.c:float4_gt Unexecuted instantiation: numeric.c:float4_gt Unexecuted instantiation: pg_dependencies.c:float4_gt Unexecuted instantiation: rangetypes_gist.c:float4_gt Unexecuted instantiation: rangetypes_selfuncs.c:float4_gt Unexecuted instantiation: rangetypes_typanalyze.c:float4_gt Unexecuted instantiation: timestamp.c:float4_gt Unexecuted instantiation: guc_tables.c:float4_gt |
296 | | |
297 | | static inline bool |
298 | | float8_gt(const float8 val1, const float8 val2) |
299 | 0 | { |
300 | 0 | return !isnan(val2) && (isnan(val1) || val1 > val2); |
301 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_gt Unexecuted instantiation: gistget.c:float8_gt Unexecuted instantiation: gistproc.c:float8_gt Unexecuted instantiation: gistscan.c:float8_gt Unexecuted instantiation: gistutil.c:float8_gt Unexecuted instantiation: hashfunc.c:float8_gt Unexecuted instantiation: spgkdtreeproc.c:float8_gt Unexecuted instantiation: spgproc.c:float8_gt Unexecuted instantiation: spgquadtreeproc.c:float8_gt Unexecuted instantiation: spgscan.c:float8_gt Unexecuted instantiation: cash.c:float8_gt Unexecuted instantiation: float.c:float8_gt Unexecuted instantiation: geo_ops.c:float8_gt Unexecuted instantiation: geo_spgist.c:float8_gt Unexecuted instantiation: jsonpath_exec.c:float8_gt Unexecuted instantiation: multirangetypes_selfuncs.c:float8_gt Unexecuted instantiation: numeric.c:float8_gt Unexecuted instantiation: pg_dependencies.c:float8_gt Unexecuted instantiation: rangetypes_gist.c:float8_gt Unexecuted instantiation: rangetypes_selfuncs.c:float8_gt Unexecuted instantiation: rangetypes_typanalyze.c:float8_gt Unexecuted instantiation: timestamp.c:float8_gt Unexecuted instantiation: guc_tables.c:float8_gt |
302 | | |
303 | | static inline bool |
304 | | float4_ge(const float4 val1, const float4 val2) |
305 | 0 | { |
306 | 0 | return isnan(val1) || (!isnan(val2) && val1 >= val2); |
307 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_ge Unexecuted instantiation: gistget.c:float4_ge Unexecuted instantiation: gistproc.c:float4_ge Unexecuted instantiation: gistscan.c:float4_ge Unexecuted instantiation: gistutil.c:float4_ge Unexecuted instantiation: hashfunc.c:float4_ge Unexecuted instantiation: spgkdtreeproc.c:float4_ge Unexecuted instantiation: spgproc.c:float4_ge Unexecuted instantiation: spgquadtreeproc.c:float4_ge Unexecuted instantiation: spgscan.c:float4_ge Unexecuted instantiation: cash.c:float4_ge Unexecuted instantiation: float.c:float4_ge Unexecuted instantiation: geo_ops.c:float4_ge Unexecuted instantiation: geo_spgist.c:float4_ge Unexecuted instantiation: jsonpath_exec.c:float4_ge Unexecuted instantiation: multirangetypes_selfuncs.c:float4_ge Unexecuted instantiation: numeric.c:float4_ge Unexecuted instantiation: pg_dependencies.c:float4_ge Unexecuted instantiation: rangetypes_gist.c:float4_ge Unexecuted instantiation: rangetypes_selfuncs.c:float4_ge Unexecuted instantiation: rangetypes_typanalyze.c:float4_ge Unexecuted instantiation: timestamp.c:float4_ge Unexecuted instantiation: guc_tables.c:float4_ge |
308 | | |
309 | | static inline bool |
310 | | float8_ge(const float8 val1, const float8 val2) |
311 | 0 | { |
312 | 0 | return isnan(val1) || (!isnan(val2) && val1 >= val2); |
313 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_ge Unexecuted instantiation: gistget.c:float8_ge Unexecuted instantiation: gistproc.c:float8_ge Unexecuted instantiation: gistscan.c:float8_ge Unexecuted instantiation: gistutil.c:float8_ge Unexecuted instantiation: hashfunc.c:float8_ge Unexecuted instantiation: spgkdtreeproc.c:float8_ge Unexecuted instantiation: spgproc.c:float8_ge Unexecuted instantiation: spgquadtreeproc.c:float8_ge Unexecuted instantiation: spgscan.c:float8_ge Unexecuted instantiation: cash.c:float8_ge Unexecuted instantiation: float.c:float8_ge Unexecuted instantiation: geo_ops.c:float8_ge Unexecuted instantiation: geo_spgist.c:float8_ge Unexecuted instantiation: jsonpath_exec.c:float8_ge Unexecuted instantiation: multirangetypes_selfuncs.c:float8_ge Unexecuted instantiation: numeric.c:float8_ge Unexecuted instantiation: pg_dependencies.c:float8_ge Unexecuted instantiation: rangetypes_gist.c:float8_ge Unexecuted instantiation: rangetypes_selfuncs.c:float8_ge Unexecuted instantiation: rangetypes_typanalyze.c:float8_ge Unexecuted instantiation: timestamp.c:float8_ge Unexecuted instantiation: guc_tables.c:float8_ge |
314 | | |
315 | | static inline float4 |
316 | | float4_min(const float4 val1, const float4 val2) |
317 | 0 | { |
318 | 0 | return float4_lt(val1, val2) ? val1 : val2; |
319 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_min Unexecuted instantiation: gistget.c:float4_min Unexecuted instantiation: gistproc.c:float4_min Unexecuted instantiation: gistscan.c:float4_min Unexecuted instantiation: gistutil.c:float4_min Unexecuted instantiation: hashfunc.c:float4_min Unexecuted instantiation: spgkdtreeproc.c:float4_min Unexecuted instantiation: spgproc.c:float4_min Unexecuted instantiation: spgquadtreeproc.c:float4_min Unexecuted instantiation: spgscan.c:float4_min Unexecuted instantiation: cash.c:float4_min Unexecuted instantiation: float.c:float4_min Unexecuted instantiation: geo_ops.c:float4_min Unexecuted instantiation: geo_spgist.c:float4_min Unexecuted instantiation: jsonpath_exec.c:float4_min Unexecuted instantiation: multirangetypes_selfuncs.c:float4_min Unexecuted instantiation: numeric.c:float4_min Unexecuted instantiation: pg_dependencies.c:float4_min Unexecuted instantiation: rangetypes_gist.c:float4_min Unexecuted instantiation: rangetypes_selfuncs.c:float4_min Unexecuted instantiation: rangetypes_typanalyze.c:float4_min Unexecuted instantiation: timestamp.c:float4_min Unexecuted instantiation: guc_tables.c:float4_min |
320 | | |
321 | | static inline float8 |
322 | | float8_min(const float8 val1, const float8 val2) |
323 | 0 | { |
324 | 0 | return float8_lt(val1, val2) ? val1 : val2; |
325 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_min Unexecuted instantiation: gistget.c:float8_min Unexecuted instantiation: gistproc.c:float8_min Unexecuted instantiation: gistscan.c:float8_min Unexecuted instantiation: gistutil.c:float8_min Unexecuted instantiation: hashfunc.c:float8_min Unexecuted instantiation: spgkdtreeproc.c:float8_min Unexecuted instantiation: spgproc.c:float8_min Unexecuted instantiation: spgquadtreeproc.c:float8_min Unexecuted instantiation: spgscan.c:float8_min Unexecuted instantiation: cash.c:float8_min Unexecuted instantiation: float.c:float8_min Unexecuted instantiation: geo_ops.c:float8_min Unexecuted instantiation: geo_spgist.c:float8_min Unexecuted instantiation: jsonpath_exec.c:float8_min Unexecuted instantiation: multirangetypes_selfuncs.c:float8_min Unexecuted instantiation: numeric.c:float8_min Unexecuted instantiation: pg_dependencies.c:float8_min Unexecuted instantiation: rangetypes_gist.c:float8_min Unexecuted instantiation: rangetypes_selfuncs.c:float8_min Unexecuted instantiation: rangetypes_typanalyze.c:float8_min Unexecuted instantiation: timestamp.c:float8_min Unexecuted instantiation: guc_tables.c:float8_min |
326 | | |
327 | | static inline float4 |
328 | | float4_max(const float4 val1, const float4 val2) |
329 | 0 | { |
330 | 0 | return float4_gt(val1, val2) ? val1 : val2; |
331 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float4_max Unexecuted instantiation: gistget.c:float4_max Unexecuted instantiation: gistproc.c:float4_max Unexecuted instantiation: gistscan.c:float4_max Unexecuted instantiation: gistutil.c:float4_max Unexecuted instantiation: hashfunc.c:float4_max Unexecuted instantiation: spgkdtreeproc.c:float4_max Unexecuted instantiation: spgproc.c:float4_max Unexecuted instantiation: spgquadtreeproc.c:float4_max Unexecuted instantiation: spgscan.c:float4_max Unexecuted instantiation: cash.c:float4_max Unexecuted instantiation: float.c:float4_max Unexecuted instantiation: geo_ops.c:float4_max Unexecuted instantiation: geo_spgist.c:float4_max Unexecuted instantiation: jsonpath_exec.c:float4_max Unexecuted instantiation: multirangetypes_selfuncs.c:float4_max Unexecuted instantiation: numeric.c:float4_max Unexecuted instantiation: pg_dependencies.c:float4_max Unexecuted instantiation: rangetypes_gist.c:float4_max Unexecuted instantiation: rangetypes_selfuncs.c:float4_max Unexecuted instantiation: rangetypes_typanalyze.c:float4_max Unexecuted instantiation: timestamp.c:float4_max Unexecuted instantiation: guc_tables.c:float4_max |
332 | | |
333 | | static inline float8 |
334 | | float8_max(const float8 val1, const float8 val2) |
335 | 0 | { |
336 | 0 | return float8_gt(val1, val2) ? val1 : val2; |
337 | 0 | } Unexecuted instantiation: brin_minmax_multi.c:float8_max Unexecuted instantiation: gistget.c:float8_max Unexecuted instantiation: gistproc.c:float8_max Unexecuted instantiation: gistscan.c:float8_max Unexecuted instantiation: gistutil.c:float8_max Unexecuted instantiation: hashfunc.c:float8_max Unexecuted instantiation: spgkdtreeproc.c:float8_max Unexecuted instantiation: spgproc.c:float8_max Unexecuted instantiation: spgquadtreeproc.c:float8_max Unexecuted instantiation: spgscan.c:float8_max Unexecuted instantiation: cash.c:float8_max Unexecuted instantiation: float.c:float8_max Unexecuted instantiation: geo_ops.c:float8_max Unexecuted instantiation: geo_spgist.c:float8_max Unexecuted instantiation: jsonpath_exec.c:float8_max Unexecuted instantiation: multirangetypes_selfuncs.c:float8_max Unexecuted instantiation: numeric.c:float8_max Unexecuted instantiation: pg_dependencies.c:float8_max Unexecuted instantiation: rangetypes_gist.c:float8_max Unexecuted instantiation: rangetypes_selfuncs.c:float8_max Unexecuted instantiation: rangetypes_typanalyze.c:float8_max Unexecuted instantiation: timestamp.c:float8_max Unexecuted instantiation: guc_tables.c:float8_max |
338 | | |
339 | | #endif /* FLOAT_H */ |