All:

In fact, I also have

> > capabilities("long.double")
> long.double 
>       FALSE 

on my M1 machine.  I made a mistake earlier (was "on" the Intel machine, 
accidentally).  I'm sorry for misleading anyone.

I will need to adjust the tolerance on my tests for the M1.  I think that's 
somewhat unfortunate, but what can we do?

I really appreciate the insights from Simon and Brian.  Thank you so much for 
the quick answers!

Happy Holidays, everyone.

Cheers,

Matt






> On Dec 21, 2021, at 4:10 PM, Prof Brian Ripley <rip...@stats.ox.ac.uk> wrote:
> 
> On 21/12/2021 20:46, Simon Urbanek wrote:
>> Matt,
>> yes, arm64 does not support long doubles. In C the long double type is 
>> 64-bit there so has the same precision as doubles (this is allowed by the 
>> standard).
> 
> And documented in ?.Machine.
> 
> However, I see on my M1 Pro
> 
>> capabilities("long.double")
> long.double
>      FALSE
> 
> on all the arm64 builds I have installed, including the current CRAN 
> distribution (of 4.1.2) and that at mac.r-project.org (see below).  So I have 
> no idea why TRUE is reported below (if this really was an arm64 build run on 
> the M1 Pro).
> 
> R version 4.1.2 Patched (2021-12-16 r81394) -- "Bird Hippie"
> ...
> > capabilities('long.double')
> long.double
>      FALSE
> 
> 
>> Cheers,
>> Simon
>>> On Dec 22, 2021, at 9:21 AM, Matthew Heun via R-SIG-Mac 
>>> <r-sig-mac@r-project.org> wrote:
>>> 
>>> All:
>>> 
>>> I'm seeing some test failures on a new M1 Pro machine that I do not see on 
>>> my Intel machine.  I'm investigating whether the test failures are caused 
>>> by machine precision differences.  On my M1 Pro machine, differences of 
>>> large numbers are greater than a specified tolerance.  (On my Intel 
>>> machine, differences between the supposed same numbers are within 
>>> tolerance.)
> 
> A small number of packages (and R itself) have needed tolerances increased 
> for checks on arm64.
> 
>>> 
>>> The output of .Machine shows some differences.  I have 2 questions below, 
>>> each identified by "****".
>>> 
>>> (1) For sizeof.longdouble, I see the following:
>>> 
>>> Intel machine:
>>> 
>>>> $sizeof.longdouble
>>>> [1] 16
>>> 
>>> M1 Pro machine:
>>> 
>>>> $sizeof.longdouble
>>>> [1] 8
>>> 
>>> 
>>> 
>>> ?.Machine says:
>>> 
>>> sizeof.longdouble   
>>> the number of bytes in a C long double type. Will be zero if there is no 
>>> such type (or its use was disabled when R was built), otherwise possibly12 
>>> (most 32-bit builds) or 16 (most 64-bit builds).
>>> 
>>> The M1 Pro uses a 64-bit architecture.  So this result is surprising to me.
>>> 
>>> Furthermore,
>>> 
>>>>> capabilities("long.double")
>>>> long.double
>>>>       TRUE
>>> 
>>> So somebody thinks that long doubles are supported.
>>> 
>>> **** Is the difference in sizeof.longdouble between the Intel and M1 
>>> architectures expected?
>>> 
>>> 
>>> (2) Also, my M1 Pro machine is missing additional fields (that the Intel 
>>> machine reports):
>>> 
>>>> $longdouble.eps
>>>> [1] 1.084202e-19
>>>> 
>>>> $longdouble.neg.eps
>>>> [1] 5.421011e-20
>>>> 
>>>> $longdouble.digits
>>>> [1] 64
>>>> 
>>>> $longdouble.rounding
>>>> [1] 5
>>>> 
>>>> $longdouble.guard
>>>> [1] 0
>>>> 
>>>> $longdouble.ulp.digits
>>>> [1] -63
>>>> 
>>>> $longdouble.neg.ulp.digits
>>>> [1] -64
>>>> 
>>>> $longdouble.exponent
>>>> [1] 15
>>>> 
>>>> $longdouble.min.exp
>>>> [1] -16382
>>>> 
>>>> $longdouble.max.exp
>>>> [1] 16384
>>> 
>>> **** Is there a reason why the above entries are missing from the output of 
>>> .Machine on the M1 Pro machine?
>>> 
>>> 
>>> 
>>> My R installation is:  4.1.2 Patched (2021/12/16, r81394)
>>> 
>>> 
>>> 
>>> Any help will be appreciated.
>>> 
>>> 
>>> 
>>> Cheers,
>>> 
>>> Matt
> 
> 
> -- 
> Brian D. Ripley,                  rip...@stats.ox.ac.uk
> Emeritus Professor of Applied Statistics, University of Oxford

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to