[R-pkg-devel] Use of long double in configuration

J C Nash pro|jcn@@h @end|ng |rom gm@||@com
Wed Apr 30 12:29:43 CEST 2025


As one of original 30-some members of 1985 IEEE 754, I find it discouraging that
we are treating long-double as the exception, when it is the introduction of
"short double" in M1 etc chips that have forced the issue. There are strong
commercial reasons, but they aren't computational ones.

JN


On 2025-04-30 05:08, Tim Taylor wrote:
> Thank you all!
> 
> Everything is clear.
> 
> Tim
> 
> On Wed, 30 Apr 2025, at 10:07 AM, Tomas Kalibera wrote:
>> On 4/30/25 10:43, Tim Taylor wrote:
>>> Cheers for the quick response.
>>>
>>> To clarify my question: Is it correct to say that as long as packages do not assume the greater precision provided by 'double' there is no reason they cannot use 'long double' to get *possible* advantages (e.g. in summations). AFAICT 'long double' is (and has always been) part of the C standard so it's use as a type should be unproblematic (this is the query relevant to matrixStats).
>>
>> Probably already clear from previous answers, but yes, packages can use
>> long double type.
>>
>> Whenever using a long double type, one needs to be careful about making
>> sure the algorithms work, and the tests pass (so have reasonable
>> tolerances), even when the long double type happens to be just the same
>> as double. This is the case on aarch64, and macOS/aarch64 is one of the
>> platforms where packages have to work, anyway, so this shouldn't be too
>> limiting anymore - but really one needs to test on such platform.
>>
>> R itself has an option to disable use of long double to make such
>> testing in R itself possible also on other platforms. In principle one
>> could do something similar in a package, have some ifdefs to disable
>> long doubles, but this is not required. And I probably wouldn't do that,
>> I'd just test on aarch64 regularly.
>>
>> See Writing R Extensions for more details.
>>
>> Best
>> Tomas
>>
>>> Apologies if this does not make much sense.
>>>
>>> Tim
>>>
>>>
>>>
>>> On Wed, 30 Apr 2025, at 9:33 AM, Uwe Ligges wrote:
>>>> On 30.04.2025 10:25, Tim Taylor wrote:
>>>>> Is it correct to say that R's conditional use of long double is around ensuring things work on platforms which have 'long double' identical to 'double' types, as opposed to there being an odd compiler targeted that does not even have any concept of 'long double' type?
>>>> a double is 64 bit and stored that way on all platforms, the concept of
>>>> long doubles is CPU specific. x86 chips have 80bit in the floating point
>>>> units for calculations before rounding (and normalizing) to a regular
>>>> double.
>>>>
>>>> Some chips, e.g. those ARM chips used in current M[123]Macs (hence very
>>>> relevant topic), do not support long doubles. And compilers offer to
>>>> compile without support for long doubles which e.g. CRAN uses to check
>>>> in an additional (issues) check.
>>>>
>>>> Best,
>>>> Uwe Ligges
>>>>
>>>>> As background this was motivated by a query raised in the matrixStats package:
>>>>> https://github.com/HenrikBengtsson/matrixStats/issues/278
>>>>>
>>>>> ______________________________________________
>>>>> R-package-devel using r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>>
>>>> Attachments:
>>>> * smime.p7s
>>> ______________________________________________
>>> R-package-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> 
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list