*/
#$d_bzero HAS_BZERO /**/
+/* HAS_CBRT:
+ * This symbol, if defined, indicates that the cbrt() (cube root)
+ * function is available.
+ */
+#$d_cbrt HAS_CBRT /**/
+
/* HAS_CHOWN:
* This symbol, if defined, indicates that the chown routine is
* available.
*/
#$d_readlink HAS_READLINK /**/
+/* HAS_REGCOMP:
+ * This symbol, if defined, indicates that the regcomp() routine is
+ * available to do some regular patern matching (usually on POSIX.2
+ * conforming systems).
+ */
+#$d_regcomp HAS_REGCOMP /* POSIX.2 */
+
/* HAS_RENAME:
* This symbol, if defined, indicates that the rename routine is available
* to rename files. Otherwise you should do the unlink(), link(), unlink()
*/
#$d_setsid HAS_SETSID /**/
+/* HAS_STAT:
+ * This symbol, if defined, indicates that the stat routine is
+ * available to get file status.
+ */
+#$d_stat HAS_STAT /**/
+
/* HAS_STRCHR:
* This symbol is defined to indicate that the strchr()/strrchr()
* functions are available for string searching. If not, try the
/* LONG_DOUBLESIZE:
* This symbol contains the size of a long double, so that the
* C preprocessor can make decisions based on it. It is only
- * defined if the system supports long doubles.
+ * defined if the system supports long doubles. Note that this
+ * is sizeof(long double), which may include unused bytes.
*/
/* HAS_LDEXPL:
* This symbol, if defined, indicates that the ldexpl routine is
* This symbol, if defined, indicates that the BSD socketpair() call is
* supported.
*/
-/* HAS_MSG_CTRUNC:
- * This symbol, if defined, indicates that the MSG_CTRUNC is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_DONTROUTE:
- * This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_OOB:
- * This symbol, if defined, indicates that the MSG_OOB is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_PEEK:
- * This symbol, if defined, indicates that the MSG_PEEK is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_PROXY:
- * This symbol, if defined, indicates that the MSG_PROXY is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_SCM_RIGHTS:
- * This symbol, if defined, indicates that the SCM_RIGHTS is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
/* HAS_SOCKADDR_SA_LEN:
* This symbol, if defined, indicates that the struct sockaddr
* structure has a member called sa_len, indicating the length of
#$d_socket HAS_SOCKET /**/
#$d_sockpair HAS_SOCKETPAIR /**/
#$d_sockaddr_sa_len HAS_SOCKADDR_SA_LEN /**/
-#$d_msg_ctrunc HAS_MSG_CTRUNC /**/
-#$d_msg_dontroute HAS_MSG_DONTROUTE /**/
-#$d_msg_oob HAS_MSG_OOB /**/
-#$d_msg_peek HAS_MSG_PEEK /**/
-#$d_msg_proxy HAS_MSG_PROXY /**/
-#$d_scm_rights HAS_SCM_RIGHTS /**/
#$d_sockaddr_in6 HAS_SOCKADDR_IN6 /**/
#$d_sin6_scope_id HAS_SIN6_SCOPE_ID /**/
#$d_ip_mreq HAS_IP_MREQ /**/
*/
#$d_aintl HAS_AINTL /**/
+/* HAS_ASINH:
+ * This symbol, if defined, indicates that the asinh routine is
+ * available to do the inverse hyperbolic sine function.
+ */
+#$d_asinh HAS_ASINH /**/
+
+/* HAS_ATANH:
+ * This symbol, if defined, indicates that the atanh routine is
+ * available to do the inverse hyperbolic tangent function.
+ */
+#$d_atanh HAS_ATANH /**/
+
/* HAS_BUILTIN_CHOOSE_EXPR:
* Can we handle GCC builtin for compile-time ternary-like expressions
*/
*/
#$d_cmsghdr_s HAS_STRUCT_CMSGHDR /**/
+/* HAS_COPYSIGN:
+ * This symbol, if defined, indicates that the copysign routine is
+ * available to do the copysign function.
+ */
+#$d_copysign HAS_COPYSIGN /**/
+
/* HAS_COPYSIGNL:
* This symbol, if defined, indicates that the copysignl routine is
* available. If aintl is also present we can emulate modfl.
*/
#$d_dlsymun DLSYM_NEEDS_UNDERSCORE /**/
+/* HAS_ERF:
+ * This symbol, if defined, indicates that the erf routine is
+ * available to do the error function.
+ */
+#$d_erf HAS_ERF /**/
+
+/* HAS_ERFC:
+ * This symbol, if defined, indicates that the erfc routine is
+ * available to do the complementary error function.
+ */
+#$d_erfc HAS_ERFC /**/
+
+/* HAS_EXP2:
+ * This symbol, if defined, indicates that the exp2 routine is
+ * available to do the 2**x function.
+ */
+#$d_exp2 HAS_EXP2 /**/
+
+/* HAS_EXPM1:
+ * This symbol, if defined, indicates that the expm1 routine is
+ * available to do the exp(x) - 1 when x is near 1 function.
+ */
+#$d_expm1 HAS_EXPM1 /**/
+
/* HAS_FAST_STDIO:
* This symbol, if defined, indicates that the "fast stdio"
* is available to manipulate the stdio buffers directly.
*/
#$d_fcntl_can_lock FCNTL_CAN_LOCK /**/
+/* HAS_FDIM:
+ * This symbol, if defined, indicates that the fdim routine is
+ * available to do the positive difference function.
+ */
+#$d_fdim HAS_FDIM /**/
+
/* HAS_FEGETROUND:
* This symbol, if defined, indicates that the fegetround routine is
* available to return the macro corresponding to the current rounding
*/
#$d_flockproto HAS_FLOCK_PROTO /**/
+/* HAS_FMA:
+ * This symbol, if defined, indicates that the fma routine is
+ * available to do the multiply-add function.
+ */
+#$d_fma HAS_FMA /**/
+
+/* HAS_FMAX:
+ * This symbol, if defined, indicates that the fmax routine is
+ * available to do the maximum function.
+ */
+#$d_fmax HAS_FMAX /**/
+
+/* HAS_FMIN:
+ * This symbol, if defined, indicates that the fmin routine is
+ * available to do the minimum function.
+ */
+#$d_fmin HAS_FMIN /**/
+
/* HAS_FP_CLASS:
* This symbol, if defined, indicates that the fp_class routine is
* available to classify doubles. Available for example in Digital UNIX.
*/
#$d_frexpl HAS_FREXPL /**/
-/* HAS_STRUCT_FS_DATA:
- * This symbol, if defined, indicates that the struct fs_data
- * to do statfs() is supported.
- */
-#$d_fs_data_s HAS_STRUCT_FS_DATA /**/
-
/* HAS_FSEEKO:
* This symbol, if defined, indicates that the fseeko routine is
* available to fseek beyond 32 bits (useful for ILP32 hosts).
*/
#$d_fseeko HAS_FSEEKO /**/
-/* HAS_FSTATFS:
- * This symbol, if defined, indicates that the fstatfs routine is
- * available to stat filesystems by file descriptors.
- */
-#$d_fstatfs HAS_FSTATFS /**/
-
/* HAS_FSYNC:
* This symbol, if defined, indicates that the fsync routine is
* available to write a file's modified data and attributes to
*/
#$d_getespwnam HAS_GETESPWNAM /**/
-/* HAS_GETFSSTAT:
- * This symbol, if defined, indicates that the getfsstat routine is
- * available to stat filesystems in bulk.
- */
-#$d_getfsstat HAS_GETFSSTAT /**/
-
/* HAS_GETITIMER:
* This symbol, if defined, indicates that the getitimer routine is
* available to return interval timers.
*/
#$d_getitimer HAS_GETITIMER /**/
-/* HAS_GETMNT:
- * This symbol, if defined, indicates that the getmnt routine is
- * available to get filesystem mount info by filename.
- */
-#$d_getmnt HAS_GETMNT /**/
-
-/* HAS_GETMNTENT:
- * This symbol, if defined, indicates that the getmntent routine is
- * available to iterate through mounted file systems to get their info.
- */
-#$d_getmntent HAS_GETMNTENT /**/
-
/* HAS_GETNAMEINFO:
* This symbol, if defined, indicates that the getnameinfo() function
* is available for use.
*/
#$d_getspnam HAS_GETSPNAM /**/
-/* HAS_HASMNTOPT:
- * This symbol, if defined, indicates that the hasmntopt routine is
- * available to query the mount options of file systems.
+/* HAS_HYPOT:
+ * This symbol, if defined, indicates that the hypot routine is
+ * available to do the hypotenuse function.
*/
-#$d_hasmntopt HAS_HASMNTOPT /**/
+#$d_hypot HAS_HYPOT /**/
+
+/* HAS_ILOGB:
+ * This symbol, if defined, indicates that the ilogb routine is
+ * available to get integer exponent of a floating-point value.
+ */
+#$d_ilogb HAS_ILOGB /**/
/* HAS_ILOGBL:
* This symbol, if defined, indicates that the ilogbl routine is
*/
#$d_isinfl HAS_ISINFL /**/
+/* HAS_ISLESS:
+ * This symbol, if defined, indicates that the isless routine is
+ * available to do the isless function.
+ */
+#$d_isless HAS_ISLESS /**/
+
/* HAS_ISNAN:
* This symbol, if defined, indicates that the isnan routine is
* available to check whether a double is a NaN.
*/
#$d_isnanl HAS_ISNANL /**/
+/* HAS_ISNORMAL:
+ * This symbol, if defined, indicates that the isnormal routine is
+ * available to check whether a double is normal (non-zero normalized).
+ */
+#$d_isnormal HAS_ISNORMAL /**/
+
/* HAS_J0:
* This symbol, if defined, indicates to the C program that the
* j0() function is available for Bessel functions of the first
#$d_j0 HAS_J0 /**/
#$d_j0l HAS_J0L /**/
+/* HAS_LC_MONETARY_2008:
+ * This symbol, if defined, indicates that the localeconv routine is
+ * available and has the additional members added in POSIX 1003.1-2008.
+ */
+#$d_lc_monetary_2008 HAS_LC_MONETARY_2008 /**/
+
/* HAS_LDBL_DIG:
* This symbol, if defined, indicates that this system's <float.h>
* or <limits.h> defines the symbol LDBL_DIG, which is the number
*/
#$d_ldbl_dig HAS_LDBL_DIG /* */
+/* HAS_LGAMMA:
+ * This symbol, if defined, indicates that the lgamma routine is
+ * available to do the log gamma function. See also HAS_TGAMMA and
+ * HAS_LGAMMA_R.
+ */
+#$d_lgamma HAS_LGAMMA /**/
+
+/* HAS_LGAMMA_R:
+ * This symbol, if defined, indicates that the lgamma_r routine is
+ * available to do the log gamma function without using the global
+ * signgam variable.
+ */
+#$d_lgamma_r HAS_LGAMMA_R /**/
+
/* LIBM_LIB_VERSION:
* This symbol, if defined, indicates that libm exports _LIB_VERSION
* and that math.h defines the enum to manipulate it.
*/
#$d_libm_lib_version LIBM_LIB_VERSION /**/
+/* HAS_LLRINT:
+ * This symbol, if defined, indicates that the llrint routine is
+ * available to return the closest long long value according to
+ * the current rounding mode.
+ */
+#$d_llrint HAS_LLRINT /**/
+
+/* HAS_LLRINTL:
+ * This symbol, if defined, indicates that the llrintl routine is
+ * available to return the closest long long value of the long double
+ * argument according to the current rounding mode.
+ */
+#$d_llrintl HAS_LLRINTL /**/
+
+/* HAS_LLROUND:
+ * This symbol, if defined, indicates that the llround routine is
+ * available to return the nearest long long value.
+ */
+#$d_llround HAS_LLROUND /**/
+
+/* HAS_LLROUNDL:
+ * This symbol, if defined, indicates that the llroundl routine is
+ * available to return the nearest long long value away from zero of
+ * the long double argument value.
+ */
+#$d_llroundl HAS_LLROUNDL /**/
+
+/* HAS_LOG1P:
+ * This symbol, if defined, indicates that the log1p routine is
+ * available to do the logarithm of 1 plus argument function.
+ */
+#$d_log1p HAS_LOG1P /**/
+
+/* HAS_LOG2:
+ * This symbol, if defined, indicates that the log2 routine is
+ * available to do the log2 function.
+ */
+#$d_log2 HAS_LOG2 /**/
+
+/* HAS_LOGB:
+ * This symbol, if defined, indicates that the logb routine is
+ * available to do the logb function.
+ */
+#$d_logb HAS_LOGB /**/
+
+/* HAS_LRINT:
+ * This symbol, if defined, indicates that the lrint routine is
+ * available to return the closest integral value according to
+ * the current rounding mode.
+ */
+#$d_lrint HAS_LRINT /**/
+
+/* HAS_LRINTL:
+ * This symbol, if defined, indicates that the lrintl routine is
+ * available to return the closest integral value of the long double
+ * argument according to the current rounding mode.
+ */
+#$d_lrintl HAS_LRINTL /**/
+
+/* HAS_LROUND:
+ * This symbol, if defined, indicates that the lround routine is
+ * available to return the nearest integral value.
+ */
+#$d_lround HAS_LROUND /**/
+
+/* HAS_LROUNDL:
+ * This symbol, if defined, indicates that the lroundl routine is
+ * available to return the nearest integral value away from zero of
+ * the long double argument value.
+ */
+#$d_lroundl HAS_LROUNDL /**/
+
/* HAS_MADVISE:
* This symbol, if defined, indicates that the madvise system call is
* available to map a file into memory.
* a prototype for the modfl() function. Otherwise, it is up
* to the program to supply one.
*/
-/* HAS_MODFL_POW32_BUG:
- * This symbol, if defined, indicates that the modfl routine is
- * broken for long doubles >= pow(2, 32).
- * For example from 4294967303.150000 one would get 4294967302.000000
- * and 1.150000. The bug has been seen in certain versions of glibc,
- * release 2.2.2 is known to be okay.
- */
#$d_modfl HAS_MODFL /**/
#$d_modflproto HAS_MODFL_PROTO /**/
-#$d_modfl_pow32_bug HAS_MODFL_POW32_BUG /**/
/* HAS_MPROTECT:
* This symbol, if defined, indicates that the mprotect system call is
*/
#$d_msghdr_s HAS_STRUCT_MSGHDR /**/
+/* HAS_NAN:
+ * This symbol, if defined, indicates that the nan routine is
+ * available to generate NaN.
+ */
+#$d_nan HAS_NAN /**/
+
+/* HAS_NEARBYINT:
+ * This symbol, if defined, indicates that the nearbyint routine is
+ * available to return the integral value closest to (according to
+ * the current rounding mode) to x.
+ */
+#$d_nearbyint HAS_NEARBYINT /**/
+
+/* HAS_NEXTAFTER:
+ * This symbol, if defined, indicates that the nextafter routine is
+ * available to return the next machine representable double from
+ * x in direction y.
+ */
+#$d_nextafter HAS_NEXTAFTER /**/
+
+/* HAS_NEXTTOWARD:
+ * This symbol, if defined, indicates that the nexttoward routine is
+ * available to return the next machine representable long double from
+ * x in direction y.
+ */
+#$d_nexttoward HAS_NEXTTOWARD /**/
+
/* HAS_NL_LANGINFO:
* This symbol, if defined, indicates that the nl_langinfo routine is
* available to return local data. You will also need <langinfo.h>
/* HAS_PRCTL:
* This symbol, if defined, indicates that the prctl routine is
* available to set process title.
+ * Note that there are at least two prctl variants: Linux and Irix.
+ * While they are somewhat similar, they are incompatible.
*/
/* HAS_PRCTL_SET_NAME:
* This symbol, if defined, indicates that the prctl routine is
*/
#$d_recvmsg HAS_RECVMSG /**/
+/* HAS_REMAINDER:
+ * This symbol, if defined, indicates that the remainder routine is
+ * available to return the floating-point remainder.
+ */
+#$d_remainder HAS_REMAINDER /**/
+
+/* HAS_REMQUO:
+ * This symbol, if defined, indicates that the remquo routine is
+ * available to return the remainder and part of quotient.
+ */
+#$d_remquo HAS_REMQUO /**/
+
+/* HAS_RINT:
+ * This symbol, if defined, indicates that the rint routine is
+ * available to return the nearest integral value to x as double
+ * using the current rounding mode.
+ */
+#$d_rint HAS_RINT /**/
+
+/* HAS_ROUND:
+ * This symbol, if defined, indicates that the round routine is
+ * available to round to nearest integer, away from zero.
+ */
+#$d_round HAS_ROUND /**/
+
/* HAS_SBRK_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the sbrk() function. Otherwise, it is up
*/
#$d_sbrkproto HAS_SBRK_PROTO /**/
+/* HAS_SCALBN:
+ * This symbol, if defined, indicates that the scalbn routine is
+ * available to multiply floating-point number by integral power
+ * of radix.
+ */
+#$d_scalbn HAS_SCALBN /**/
+
/* HAS_SCALBNL:
* This symbol, if defined, indicates that the scalbnl routine is
* available. If ilogbl is also present we can emulate frexpl.
*/
#$d_sresuproto HAS_SETRESUID_PROTO /**/
-/* HAS_STRUCT_STATFS_F_FLAGS:
- * This symbol, if defined, indicates that the struct statfs
- * does have the f_flags member containing the mount flags of
- * the filesystem containing the file.
- * This kind of struct statfs is coming from <sys/mount.h> (BSD 4.3),
- * not from <sys/statfs.h> (SYSV). Older BSDs (like Ultrix) do not
- * have statfs() and struct statfs, they have ustat() and getmnt()
- * with struct ustat and struct fs_data.
- */
-#$d_statfs_f_flags HAS_STRUCT_STATFS_F_FLAGS /**/
-
-/* HAS_STRUCT_STATFS:
- * This symbol, if defined, indicates that the struct statfs
- * to do statfs() is supported.
- */
-#$d_statfs_s HAS_STRUCT_STATFS /**/
-
-/* HAS_FSTATVFS:
- * This symbol, if defined, indicates that the fstatvfs routine is
- * available to stat filesystems by file descriptors.
- */
-#$d_fstatvfs HAS_FSTATVFS /**/
-
/* HAS_STRFTIME:
* This symbol, if defined, indicates that the strftime routine is
* available to do time formatting.
*/
#$d_telldirproto HAS_TELLDIR_PROTO /**/
+/* HAS_TGAMMA:
+ * This symbol, if defined, indicates that the tgamma routine is
+ * available to do the gamma function. See also HAS_LGAMMA.
+ */
+#$d_tgamma HAS_TGAMMA /**/
+
/* HAS_CTIME64:
* This symbol, if defined, indicates that the ctime64 () routine is
* available to do the 64bit variant of ctime ()
*/
#$d_timegm HAS_TIMEGM /**/
+/* HAS_TRUNC:
+ * This symbol, if defined, indicates that the trunc routine is
+ * available to round doubles towards zero.
+ */
+#$d_trunc HAS_TRUNC /**/
+
+/* HAS_TRUNCL:
+ * This symbol, if defined, indicates that the truncl routine is
+ * available. If copysignl is also present we can emulate modfl.
+ */
+#$d_truncl HAS_TRUNCL /**/
+
/* U32_ALIGNMENT_REQUIRED:
* This symbol, if defined, indicates that you must access
* character data through U32-aligned pointers.
*/
#$d_usleepproto HAS_USLEEP_PROTO /**/
-/* HAS_USTAT:
- * This symbol, if defined, indicates that the ustat system call is
- * available to query file system statistics by dev_t.
- */
-#$d_ustat HAS_USTAT /**/
-
/* HAS_WCSCMP:
* This symbol, if defined, indicates that the wcscmp routine is
* available to compare two wide character strings.
*/
#$i_mallocmalloc I_MALLOCMALLOC /**/
-/* I_MNTENT:
- * This symbol, if defined, indicates that <mntent.h> exists and
- * should be included.
- */
-#$i_mntent I_MNTENT /**/
-
/* I_NETINET_TCP:
* This symbol, if defined, indicates to the C program that it should
* include <netinet/tcp.h>.
*/
#$i_prot I_PROT /**/
+/* I_QUADMATH:
+ * This symbol, if defined, indicates that <quadmath.h> exists and
+ * should be included.
+ */
+#$i_quadmath I_QUADMATH /**/
+
/* I_SHADOW:
* This symbol, if defined, indicates that <shadow.h> exists and
* should be included.
*/
#$i_sysmode I_SYSMODE /**/
-/* I_SYS_MOUNT:
- * This symbol, if defined, indicates that <sys/mount.h> exists and
- * should be included.
- */
-#$i_sysmount I_SYS_MOUNT /**/
-
-/* I_SYS_STATFS:
- * This symbol, if defined, indicates that <sys/statfs.h> exists.
- */
-#$i_sysstatfs I_SYS_STATFS /**/
-
-/* I_SYS_STATVFS:
- * This symbol, if defined, indicates that <sys/statvfs.h> exists and
- * should be included.
- */
-#$i_sysstatvfs I_SYS_STATVFS /**/
-
/* I_SYSUTSNAME:
* This symbol, if defined, indicates that <sys/utsname.h> exists and
* should be included.
*/
#$i_sysutsname I_SYSUTSNAME /**/
-/* I_SYS_VFS:
- * This symbol, if defined, indicates that <sys/vfs.h> exists and
- * should be included.
+/* DOUBLEINFBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes for the double precision infinity.
*/
-#$i_sysvfs I_SYS_VFS /**/
-
-/* I_USTAT:
- * This symbol, if defined, indicates that <ustat.h> exists and
- * should be included.
+/* DOUBLENANBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes (0xHH) for the double precision not-a-number.
+ */
+/* LONGDBLINFBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes for the long double precision infinity.
*/
-#$i_ustat I_USTAT /**/
+/* LONGDBLNANBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes (0xHH) for the long double precision not-a-number.
+ */
+#define DOUBLEINFBYTES $doubleinfbytes /**/
+#define DOUBLENANBYTES $doublenanbytes /**/
+#define LONGDBLINFBYTES $longdblinfbytes /**/
+#define LONGDBLNANBYTES $longdblnanbytes /**/
/* PERL_PRIfldbl:
* This symbol, if defined, contains the string used by stdio to
* This symbol, if defined, contains the string used by stdio to
* format long doubles (format 'f') for input.
*/
+/* DOUBLEKIND:
+ * DOUBLEKIND will be one of
+ * DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN
+ * DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN
+ * DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN
+ * DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN
+ * DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
+ * DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
+ * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
+ * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
+ * DOUBLE_IS_UNKNOWN_FORMAT
+ */
+#define DOUBLEKIND $doublekind /**/
+#define DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN 1
+#define DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN 2
+#define DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN 3
+#define DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN 4
+#define DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN 5
+#define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 6
+#define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE 7
+#define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE 8
+#define DOUBLE_IS_UNKNOWN_FORMAT -1
#$d_PRIfldbl PERL_PRIfldbl $sPRIfldbl /**/
#$d_PRIgldbl PERL_PRIgldbl $sPRIgldbl /**/
#$d_PRIeldbl PERL_PRIeldbl $sPRIeldbl /**/
#$d_SCNfldbl PERL_SCNfldbl $sSCNfldbl /**/
+/* DOUBLEMANTBITS:
+ * This symbol, if defined, tells how many mantissa bits
+ * there are in double precision floating point format.
+ * Note that this is usually DBL_MANT_DIG minus one, since
+ * with the standard IEEE 754 formats DBL_MANT_DIG includes
+ * the implicit bit, which doesn't really exist.
+ */
+/* LONGDBLMANTBITS:
+ * This symbol, if defined, tells how many mantissa bits
+ * there are in long double precision floating point format.
+ * Note that this can be LDBL_MANT_DIG minus one,
+ * since LDBL_MANT_DIG can include the IEEE 754 implicit bit.
+ * The common x86-style 80-bit long double does not have
+ * an implicit bit.
+ */
+/* NVMANTBITS:
+ * This symbol, if defined, tells how many mantissa bits
+ * (not including implicit bit) there are in a Perl NV.
+ * This depends on which floating point type was chosen.
+ */
+#define DOUBLEMANTBITS $doublemantbits
+#define LONGDBLMANTBITS $longdblmantbits
+#define NVMANTBITS $nvmantbits
+
/* NEED_VA_COPY:
* This symbol, if defined, indicates that the system stores
* the variable argument list datatype, va_list, in a format
*/
/* NVSIZE:
* This symbol contains the sizeof(NV).
+ * Note that some floating point formats have unused bytes.
+ * The most notable example is the x86* 80-bit extended precision
+ * which comes in byte sizes of 12 and 16 (for 32 and 64 bit
+ * platforms, respectively), but which only uses 10 bytes.
+ * Perl compiled with -Duselongdouble on x86* is like this.
*/
/* NV_PRESERVES_UV:
* This symbol, if defined, indicates that a variable of type NVTYPE
#$useperlio USE_PERLIO /**/
#endif
+/* USE_QUADMATH:
+ * This symbol, if defined, indicates that the quadmath library should
+ * be used when available.
+ */
+#ifndef USE_QUADMATH
+#$usequadmath USE_QUADMATH /**/
+#endif
+
/* USE_SOCKS:
* This symbol, if defined, indicates that Perl should
* be built to use socks.