[R] Integer bit size and the modulus operator

Ionut Florescu ifloresc at stevens.edu
Mon Jan 30 22:06:50 CET 2006


Actually it does that in my 2.2.1 version as well:

 > options(digits=20)
 > 8^(1:20)
 [1] 8.0000000000000000e+00 6.4000000000000004e+01 5.1200000000000001e+02
 [4] 4.0960000000000001e+03 3.2768000000000002e+04 2.6214400000000002e+05
 [7] 2.0971519999999999e+06 1.6777215999999999e+07 1.3421772800000000e+08
[10] 1.0737418240000001e+09 8.5899345920000005e+09 6.8719476736000003e+10
[13] 5.4975581388799997e+11 4.3980465111039999e+12 3.5184372088832001e+13
[16] 2.8147497671065600e+14 2.2517998136852482e+15 1.8014398509481984e+16
[19] 1.4411518807585588e+17 1.1529215046068471e+18



Peter Dalgaard wrote:
> jim holtman <jholtman at gmail.com> writes:
>
>   
>> The other thing that you have to be aware of is that 8^n is not 8 multiplied
>> by itself n times.  You are probably using logs to compute this.  Here is a
>> sample of 8^(1:20). The value of 8^2 is 64.000000000000004 (not exactly an
>> integer); roundoff errors are apparent in the other values.
>>
>>     
>>> 8^(1:20)
>>>       
>>  [1] 8.0000000000000000e+00 6.4000000000000004e+01 5.1200000000000001e+02
>> 4.0960000000000001e+03
>>  [5] 3.2768000000000002e+04 2.6214400000000002e+05 2.0971519999999999e+06
>> 1.6777215999999999e+07
>>  [9] 1.3421772800000000e+08 1.0737418240000001e+09 8.5899345920000005e+09
>> 6.8719476736000003e+10
>> [13] 5.4975581388799997e+11 4.3980465111039999e+12 3.5184372088832001e+13
>> 2.8147497671065600e+14
>> [17] 2.2517998136852482e+15 1.8014398509481984e+16 1.4411518807585588e+17
>> 1.1529215046068471e+18
>>     
>
> This was resolved a few versions back as I recall it (seems to have
> eluded the NEWS file?):
>
>   
>> options(digits=20)
>> 8^(1:20)
>>     
>  [1] 8.0000000000000000000e+00 6.4000000000000000000e+01
>  [3] 5.1200000000000000000e+02 4.0960000000000000000e+03
>  [5] 3.2768000000000000000e+04 2.6214400000000000000e+05
>  [7] 2.0971520000000000000e+06 1.6777216000000000000e+07
>  [9] 1.3421772800000000000e+08 1.0737418240000000000e+09
> [11] 8.5899345920000000000e+09 6.8719476736000000000e+10
> [13] 5.4975581388800000000e+11 4.3980465111040000000e+12
> [15] 3.5184372088832000000e+13 2.8147497671065600000e+14
> [17] 2.2517998136852480000e+15 1.8014398509481984000e+16
> [19] 1.4411518807585587200e+17 1.1529215046068469760e+18
>
>   
>> 8^(1:20) %%1
>>     
>  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> Warning messages:
> 1: probable complete loss of accuracy in modulus
> 2: probable complete loss of accuracy in modulus
> 3: probable complete loss of accuracy in modulus
>
>
>




More information about the R-help mailing list