Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2017 18:28:02 +0000 (UTC)
From:      Ryan Libby <rlibby@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r322435 - head/lib/msun/src
Message-ID:  <201708121828.v7CIS2RY013813@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rlibby
Date: Sat Aug 12 18:28:02 2017
New Revision: 322435
URL: https://svnweb.freebsd.org/changeset/base/322435

Log:
  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

Modified:
  head/lib/msun/src/catrigl.c
  head/lib/msun/src/math_private.h
  head/lib/msun/src/s_csqrtl.c

Modified: head/lib/msun/src/catrigl.c
==============================================================================
--- head/lib/msun/src/catrigl.c	Sat Aug 12 18:11:41 2017	(r322434)
+++ head/lib/msun/src/catrigl.c	Sat Aug 12 18:28:02 2017	(r322435)
@@ -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)));
 

Modified: head/lib/msun/src/math_private.h
==============================================================================
--- head/lib/msun/src/math_private.h	Sat Aug 12 18:11:41 2017	(r322434)
+++ head/lib/msun/src/math_private.h	Sat Aug 12 18:28:02 2017	(r322435)
@@ -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.

Modified: head/lib/msun/src/s_csqrtl.c
==============================================================================
--- head/lib/msun/src/s_csqrtl.c	Sat Aug 12 18:11:41 2017	(r322434)
+++ head/lib/msun/src/s_csqrtl.c	Sat Aug 12 18:28:02 2017	(r322435)
@@ -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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201708121828.v7CIS2RY013813>