http://www.perlmonks.org?node_id=11104675


in reply to Re^6: Defining an XS symbol in the Makefile.PL
in thread Defining an XS symbol in the Makefile.PL

Also, I simply copied your probe logic, but I must ask if you are sure that that is the right way to do it.

Thanks for querying - I've just now realized that I've forgotten about the DoubleDouble type of long double. (Given the amount of time I've spent puzzling over that beast, I'm actually quite appalled that I could do that !!)
It's a case that technically should be given special handling. At the moment, the DoubleDoubles will end up in the elsif{} block, demanding a precision of "%.36" which is sufficient for the vast majority of cases ... but not all :-(
The DoubleDouble is an nvtype that is rarely encountered and I'm tempted to leave the code as it is and just change the comment from:
# IEEE long double or __float128 to # IEEE long double or __float128 or DoubleDouble
I'll have to do some testing on my DoubleDouble builds and look at the options.

On recent perls the approach that I took could be replaced by examining $Config{nvtype} in conjunction with $Config{longdblkind} (when nvtype is long double).
However, for perls prior to 5.22, $Config{longdblkind} is unavailable, so we need to use another method.
Besides, using nvtype and longdblkind looks even messier than what I've done - though the logic is perhaps more transparent.

The 'long double' is the type that makes things awkward - it can be either 64, 80, or 128 bits, and on 64-bit builds of perl the 80-bit, 128-bit and DoubleDouble long doubles all typically report a $Config{nvsize} value of 16, thus severely limiting the usefulness of that Config value.

Cheers,
Rob