Module Name:    src
Committed By:   riastradh
Date:           Wed Jul 17 12:00:13 UTC 2024

Modified Files:
        src/lib/libm/src: math_private.h

Log Message:
libm/src/math_private.h: Tidy up comments and whitespace.

Clarify which words are which when ambiguous.

Say `significand', not `mantissa'; we're not talking about books of
log tables here.  (Strictly speaking, this may refer either to what
IEEE 754 calls the trailing significand field of the binary encoding,
which is a sequence of bits rather than a real number in [1,2), or,
for ld80 with an explicit 1-bit, what might be called the significand
field since it's not just the trailing part after the dot.  But the
term `significand' will serve as a proxy for these cases.)


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/lib/libm/src/math_private.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libm/src/math_private.h
diff -u src/lib/libm/src/math_private.h:1.33 src/lib/libm/src/math_private.h:1.34
--- src/lib/libm/src/math_private.h:1.33	Wed Jul 17 11:59:58 2024
+++ src/lib/libm/src/math_private.h	Wed Jul 17 12:00:13 2024
@@ -11,7 +11,7 @@
 
 /*
  * from: @(#)fdlibm.h 5.1 93/09/24
- * $NetBSD: math_private.h,v 1.33 2024/07/17 11:59:58 riastradh Exp $
+ * $NetBSD: math_private.h,v 1.34 2024/07/17 12:00:13 riastradh Exp $
  */
 
 #ifndef _MATH_PRIVATE_H_
@@ -20,23 +20,18 @@
 #include <assert.h>
 #include <sys/types.h>
 
-/* The original fdlibm code used statements like:
-	n0 = ((*(int*)&one)>>29)^1;		* index of high word *
-	ix0 = *(n0+(int*)&x);			* high word of x *
-	ix1 = *((1-n0)+(int*)&x);		* low word of x *
-   to dig two 32 bit words out of the 64 bit IEEE floating point
-   value.  That is non-ANSI, and, moreover, the gcc instruction
-   scheduler gets it wrong.  We instead use the following macros.
-   Unlike the original code, we determine the endianness at compile
-   time, not at run time; I don't see much benefit to selecting
-   endianness at run time.  */
-
-/* A union which permits us to convert between a double and two 32 bit
-   ints.  */
-
 /*
- * A union which permits us to convert between a double and two 32 bit
- * ints.
+ * The original fdlibm code used statements like:
+ *
+ *	n0 = ((*(int*)&one)>>29)^1;		// index of high word
+ *	ix0 = *(n0+(int*)&x);			// high word of x
+ *	ix1 = *((1-n0)+(int*)&x);		// low word of x
+ *
+ * to dig two 32-bit words out of the-64 bit IEEE floating point value.
+ * That is non-ANSI, and, moreover, the gcc instruction scheduler gets
+ * it wrong.  We instead use the following macros.  Unlike the original
+ * code, we determine the endianness at compile time, not at run time;
+ * I don't see much benefit to selecting endianness at run time.
  */
 
 #ifdef __arm__
@@ -49,8 +44,10 @@
 #define	IEEE_WORD_ORDER	BYTE_ORDER
 #endif
 
-/* A union which permits us to convert between a long double and
-   four 32 bit ints.  */
+/*
+ * A union which permits us to convert between a long double and
+ * four 32-bit integers.
+ */
 
 #if IEEE_WORD_ORDER == BIG_ENDIAN
 
@@ -90,6 +87,11 @@ typedef union
 
 #endif
 
+/*
+ * A union which permits us to convert between a double and two 32-bit
+ * integers.
+ */
+
 #if IEEE_WORD_ORDER == BIG_ENDIAN
 
 typedef union
@@ -126,7 +128,7 @@ typedef union
 
 #endif
 
-/* Get two 32 bit ints from a double.  */
+/* Get two 32-bit integers from a double.  */
 
 #define EXTRACT_WORDS(ix0,ix1,d)				\
 do {								\
@@ -136,7 +138,7 @@ do {								\
   (ix1) = ew_u.parts.lsw;					\
 } while (0)
 
-/* Get a 64-bit int from a double. */
+/* Get a 64-bit integer from a double. */
 #define EXTRACT_WORD64(ix,d)					\
 do {								\
   ieee_double_shape_type ew_u;					\
@@ -145,7 +147,7 @@ do {								\
 } while (0)
 
 
-/* Get the more significant 32 bit int from a double.  */
+/* Get the more significant 32-bit integer from a double.  */
 
 #define GET_HIGH_WORD(i,d)					\
 do {								\
@@ -154,7 +156,7 @@ do {								\
   (i) = gh_u.parts.msw;						\
 } while (0)
 
-/* Get the less significant 32 bit int from a double.  */
+/* Get the less significant 32-bit integer from a double.  */
 
 #define GET_LOW_WORD(i,d)					\
 do {								\
@@ -163,7 +165,7 @@ do {								\
   (i) = gl_u.parts.lsw;						\
 } while (0)
 
-/* Set a double from two 32 bit ints.  */
+/* Set a double from two 32-bit integers.  */
 
 #define INSERT_WORDS(d,ix0,ix1)					\
 do {								\
@@ -173,7 +175,8 @@ do {								\
   (d) = iw_u.value;						\
 } while (0)
 
-/* Set a double from a 64-bit int. */
+/* Set a double from a 64-bit integer. */
+
 #define INSERT_WORD64(d,ix)					\
 do {								\
   ieee_double_shape_type iw_u;					\
@@ -181,8 +184,7 @@ do {								\
   (d) = iw_u.value;						\
 } while (0)
 
-
-/* Set the more significant 32 bits of a double from an int.  */
+/* Set the more significant 32 bits of a double from an integer.  */
 
 #define SET_HIGH_WORD(d,v)					\
 do {								\
@@ -192,7 +194,7 @@ do {								\
   (d) = sh_u.value;						\
 } while (0)
 
-/* Set the less significant 32 bits of a double from an int.  */
+/* Set the less significant 32 bits of a double from an integer.  */
 
 #define SET_LOW_WORD(d,v)					\
 do {								\
@@ -202,8 +204,10 @@ do {								\
   (d) = sl_u.value;						\
 } while (0)
 
-/* A union which permits us to convert between a float and a 32 bit
-   int.  */
+/*
+ * A union which permits us to convert between a float and a 32-bit
+ * integer.
+ */
 
 typedef union
 {
@@ -211,7 +215,7 @@ typedef union
   u_int32_t word;
 } ieee_float_shape_type;
 
-/* Get a 32 bit int from a float.  */
+/* Get a 32-bit integer from a float.  */
 
 #define GET_FLOAT_WORD(i,d)					\
 do {								\
@@ -220,7 +224,7 @@ do {								\
   (i) = gf_u.word;						\
 } while (0)
 
-/* Set a float from a 32 bit int.  */
+/* Set a float from a 32-bit integer.  */
 
 #define SET_FLOAT_WORD(d,i)					\
 do {								\
@@ -240,10 +244,9 @@ do {								\
   ((u)->extu_fracl = (v) & ((1ULL << EXT_FRACLBITS) - 1),	\
   (u)->extu_frach = (v) >> EXT_FRACLBITS)
 
-
 /*
- * Get expsign and mantissa as 16 bit and 64 bit ints from an 80 bit long
- * double.
+ * Get expsign as 16-bit integer ix0 and significand as 64-bit integer
+ * ix1 from an 80-bit long double d.
  */
 
 #define	EXTRACT_LDBL80_WORDS(ix0,ix1,d)				\
@@ -255,8 +258,9 @@ do {								\
 } while (0)
 
 /*
- * Get expsign and mantissa as one 16 bit and two 64 bit ints from a 128 bit
- * long double.
+ * Get expsign as 16-bit integer ix0 and significand as two 64-bit
+ * integers, ix1 high-order and ix2 low-order, from a 128-bit long
+ * double d.
  */
 
 #define	EXTRACT_LDBL128_WORDS(ix0,ix1,ix2,d)			\
@@ -268,7 +272,7 @@ do {								\
   (ix2) = ew_u.extu_fracl;					\
 } while (0)
 
-/* Get expsign as a 16 bit int from a long double.  */
+/* Get expsign as a 16-bit integer i from a long double d.  */
 
 #define	GET_LDBL_EXPSIGN(i,d)					\
 do {								\
@@ -278,8 +282,8 @@ do {								\
 } while (0)
 
 /*
- * Set an 80 bit long double from a 16 bit int expsign and a 64 bit int
- * mantissa.
+ * Set an 80-bit long double d from a 16-bit integer expsign ix0 and a
+ * 64-bit integer significand ix1.
  */
 
 #define	INSERT_LDBL80_WORDS(d,ix0,ix1)				\
@@ -291,8 +295,9 @@ do {								\
 } while (0)
 
 /*
- * Set a 128 bit long double from a 16 bit int expsign and two 64 bit ints
- * comprising the mantissa.
+ * Set a 128-bit long double d from a 16-bit integer expsign ix0 and
+ * two 64-bit integers composing the significand, ix1 high-order and
+ * ix2 low-order.
  */
 
 #define	INSERT_LDBL128_WORDS(d,ix0,ix1,ix2)			\
@@ -304,7 +309,7 @@ do {								\
   (d) = iw_u.extu_ld;						\
 } while (0)
 
-/* Set expsign of a long double from a 16 bit int.  */
+/* Set expsign of a long double from a 16-bit integer.  */
 
 #define	SET_LDBL_EXPSIGN(d,v)					\
 do {								\
@@ -503,7 +508,7 @@ void _scan_nan(uint32_t *__words, int __
  *
  * When one arg is NaN, the result is typically that arg quieted.  When both
  * args are NaNs, the result is typically the quietening of the arg whose
- * mantissa is largest after quietening.  When neither arg is NaN, the
+ * significand is largest after quietening.  When neither arg is NaN, the
  * result may be NaN because it is indeterminate, or finite for subsequent
  * construction of a NaN as the indeterminate 0.0L/0.0L.
  *
@@ -680,7 +685,7 @@ extern long double __ieee754_fmodl(long 
 extern long double __ieee754_sqrtl(long double);
 
 /*
- * TRUNC() is a macro that sets the trailing 27 bits in the mantissa of an
+ * TRUNC() is a macro that sets the trailing 27 bits in the significand of an
  * IEEE double variable to zero.  It must be expression-like for syntactic
  * reasons, and we implement this expression using an inline function
  * instead of a pure macro to avoid depending on the gcc feature of
@@ -876,10 +881,10 @@ irintl(long double x)
 #define breakpoint()    asm("int $3")
 #else
 #include <signal.h>
- 
+
 #define breakpoint()    raise(SIGTRAP)
-#endif  
-#endif  
+#endif
+#endif
 
 #ifdef STRUCT_RETURN
 #define	RETURNSP(rp) do {		\

Reply via email to