Revert r322418, LDBL_MAX_EXP unsuitable for macro pasting on some arches
Either need a different way to spell HALF_LDBL_MAX, or a different way to spell LDBL_MAX_EXP, or a different approach. Reported by: ian
This commit is contained in:
parent
229d577fe8
commit
4c889da8b6
@ -307,7 +307,7 @@ clog_for_large_values(long double complex z)
|
||||
ay = t;
|
||||
}
|
||||
|
||||
if (ax >= HALF_LDBL_MAX)
|
||||
if (ax > LDBL_MAX / 2)
|
||||
return (CMPLXL(logl(hypotl(x / m_e, y / m_e)) + 1,
|
||||
atan2l(y, x)));
|
||||
|
||||
|
@ -272,15 +272,6 @@ do { \
|
||||
#define LD80C(m, ex, v) { .e = (v), }
|
||||
#endif
|
||||
|
||||
/*
|
||||
* XXX LDBL_MAX is broken on i386. If the precise value of LDBL_MAX is not
|
||||
* needed, this may be worked around by instead referring to a proxy, such
|
||||
* as HALF_LDBL_MAX, below. HALF_LDBL_MAX is approximately LDBL_MAX / 2,
|
||||
* actually just greater than. Note that 2 * HALF_LDBL_MAX will always
|
||||
* overflow to infinity, regardless of the precision and rounding modes.
|
||||
*/
|
||||
#define HALF_LDBL_MAX __CONCAT(__CONCAT(0x0.8p, LDBL_MAX_EXP), L)
|
||||
|
||||
#ifdef FLT_EVAL_METHOD
|
||||
/*
|
||||
* Attempt to get strict C99 semantics for assignment with non-C99 compilers.
|
||||
|
@ -43,7 +43,7 @@ __FBSDID("$FreeBSD$");
|
||||
#pragma STDC CX_LIMITED_RANGE ON
|
||||
|
||||
/* We risk spurious overflow for components >= LDBL_MAX / (1 + sqrt(2)). */
|
||||
#define THRESH (HALF_LDBL_MAX / 1.207106781186547524400844362104849L)
|
||||
#define THRESH (LDBL_MAX / 2.414213562373095048801688724209698L)
|
||||
|
||||
long double complex
|
||||
csqrtl(long double complex z)
|
||||
|
Loading…
Reference in New Issue
Block a user