longdblsize (d_longdbl.U):
This variable contains the value of the LONG_DOUBLESIZE symbol, which
indicates to the C program how many bytes there are in a long double,
- if this system supports long doubles.
+ if this system supports long doubles. Note that this is
+ sizeof(long double), which may include unused bytes.
longlongsize (d_longlong.U):
This variable contains the value of the LONGLONGSIZE symbol, which
a Perl NV using %G-ish floating point format.
nvsize (perlxv.U):
- This variable is the size of an NV in bytes.
+ This variable is the size of a Perl NV in bytes.
+ Note that some floating point formats have unused bytes.
nvtype (perlxv.U):
This variable contains the C type used for Perl's NV.
/* 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
*/
/* 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