22#define M_PI 3.14159265358979323846
26#define RADIANS_PER_DEGREE 0.0174532925199432957692
38 const char *type_name,
const char *orig_string,
39 struct Node *escontext);
41 const char *type_name,
const char *orig_string,
42 struct Node *escontext);
73#error "Postgres requires support for IEEE quiet NaNs"
105 result = val1 + val2;
106 if (
unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
117 result = val1 + val2;
118 if (
unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
129 result = val1 - val2;
130 if (
unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
141 result = val1 - val2;
142 if (
unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
153 result = val1 * val2;
154 if (
unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
156 if (
unlikely(result == 0.0f) && val1 != 0.0f && val2 != 0.0f)
167 result = val1 * val2;
168 if (
unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
170 if (
unlikely(result == 0.0) && val1 != 0.0 && val2 != 0.0)
181 if (
unlikely(val2 == 0.0f) && !isnan(val1))
183 result = val1 / val2;
184 if (
unlikely(isinf(result)) && !isinf(val1))
186 if (
unlikely(result == 0.0f) && val1 != 0.0f && !isinf(val2))
197 if (
unlikely(val2 == 0.0) && !isnan(val1))
199 result = val1 / val2;
200 if (
unlikely(isinf(result)) && !isinf(val1))
202 if (
unlikely(result == 0.0) && val1 != 0.0 && !isinf(val2))
219 return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2;
225 return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2;
231 return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2;
237 return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2;
243 return !isnan(val1) && (isnan(val2) || val1 < val2);
249 return !isnan(val1) && (isnan(val2) || val1 < val2);
255 return isnan(val2) || (!isnan(val1) && val1 <= val2);
261 return isnan(val2) || (!isnan(val1) && val1 <= val2);
267 return !isnan(val2) && (isnan(val1) || val1 > val2);
273 return !isnan(val2) && (isnan(val1) || val1 > val2);
279 return isnan(val1) || (!isnan(val2) && val1 >= val2);
285 return isnan(val1) || (!isnan(val2) && val1 >= val2);
291 return float4_lt(val1, val2) ? val1 : val2;
297 return float8_lt(val1, val2) ? val1 : val2;
303 return float4_gt(val1, val2) ? val1 : val2;
309 return float8_gt(val1, val2) ? val1 : val2;
float8 float8in_internal(char *num, char **endptr_p, const char *type_name, const char *orig_string, struct Node *escontext)
static float8 float8_min(const float8 val1, const float8 val2)
static float8 float8_mul(const float8 val1, const float8 val2)
static float4 float4_div(const float4 val1, const float4 val2)
static float4 get_float4_infinity(void)
pg_noreturn void float_overflow_error(void)
PGDLLIMPORT int extra_float_digits
static bool float4_lt(const float4 val1, const float4 val2)
static float8 float8_pl(const float8 val1, const float8 val2)
static float8 float8_mi(const float8 val1, const float8 val2)
static bool float4_ge(const float4 val1, const float4 val2)
static float4 get_float4_nan(void)
int is_infinite(float8 val)
static bool float8_ne(const float8 val1, const float8 val2)
static bool float4_ne(const float4 val1, const float4 val2)
static float4 float4_pl(const float4 val1, const float4 val2)
static float4 float4_max(const float4 val1, const float4 val2)
static bool float4_eq(const float4 val1, const float4 val2)
static float4 float4_mul(const float4 val1, const float4 val2)
pg_noreturn void float_underflow_error(void)
static float8 get_float8_infinity(void)
static bool float8_ge(const float8 val1, const float8 val2)
int float4_cmp_internal(float4 a, float4 b)
char * float8out_internal(float8 num)
float4 float4in_internal(char *num, char **endptr_p, const char *type_name, const char *orig_string, struct Node *escontext)
static float4 float4_mi(const float4 val1, const float4 val2)
static float8 float8_max(const float8 val1, const float8 val2)
static bool float8_le(const float8 val1, const float8 val2)
static bool float4_gt(const float4 val1, const float4 val2)
static bool float8_eq(const float8 val1, const float8 val2)
static float4 float4_min(const float4 val1, const float4 val2)
static bool float4_le(const float4 val1, const float4 val2)
static float8 get_float8_nan(void)
static float8 float8_div(const float8 val1, const float8 val2)
pg_noreturn void float_zero_divide_error(void)
static bool float8_lt(const float8 val1, const float8 val2)
static bool float8_gt(const float8 val1, const float8 val2)
int float8_cmp_internal(float8 a, float8 b)