Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Jul 2018 14:24:48 +0000 (UTC)
From:      Bruce Evans <bde@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336484 - head/lib/msun/src
Message-ID:  <201807191424.w6JEOmGQ059427@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bde
Date: Thu Jul 19 14:24:48 2018
New Revision: 336484
URL: https://svnweb.freebsd.org/changeset/base/336484

Log:
  Oops, r336412 undid the fix of the overflow threshold in r323003.  Restore
  the previous overflow threshold and adjust comments.

Modified:
  head/lib/msun/src/s_csqrtl.c

Modified: head/lib/msun/src/s_csqrtl.c
==============================================================================
--- head/lib/msun/src/s_csqrtl.c	Thu Jul 19 13:09:29 2018	(r336483)
+++ head/lib/msun/src/s_csqrtl.c	Thu Jul 19 14:24:48 2018	(r336484)
@@ -36,17 +36,22 @@ __FBSDID("$FreeBSD$");
 #include "math_private.h"
 
 /*
- * THRESH is now calculated portably (up to 113-bit precision).  However,
- * the denormal threshold is hard-coded for a 15-bit exponent with the usual
- * bias.  s_logl.c and e_hypotl have less hard-coding but end up requiring
- * the same for the exponent and more for the mantissa.
+ * Several thresholds require a 15-bit exponent and also the usual bias.
+ * s_logl.c and e_hypotl have less hard-coding but end up requiring the
+ * same for the exponent and more for the mantissa.
  */
 #if LDBL_MAX_EXP != 0x4000
 #error "Unsupported long double format"
 #endif
 
-/* For avoiding overflow for components >= LDBL_MAX / (1 + sqrt(2)). */
-#define	THRESH	(LDBL_MAX / 2.414213562373095048801688724209698L)
+/*
+ * Overflow must be avoided for components >= LDBL_MAX / (1 + sqrt(2)).
+ * The precise threshold is nontrivial to determine and spell, so use a
+ * lower threshold of approximaely LDBL_MAX / 4, and don't use LDBL_MAX
+ * to spell this since LDBL_MAX is broken on i386 (it overflows in 53-bit
+ * precision).
+ */
+#define	THRESH	0x1p16382L
 
 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?201807191424.w6JEOmGQ059427>