diff --git a/math_private.h b/math_private.h --- a/math_private.h +++ b/math_private.h @@ -20,16 +20,24 @@ #include #include #include #include "mozilla/EndianUtils.h" #include "fdlibm.h" +/* + * Emulate FreeBSD internal double types. + * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t + */ + +typedef double __double_t; +typedef __double_t double_t; + /* * 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.