[R] [External] long integer handling
Richard M. Heiberger
rmh @end|ng |rom temp|e@edu
Sat Nov 14 03:01:56 CET 2020
You need the Rmpfr package. Your calculation of 2^64 is an ordinary
double precision number with 53 bits of precision.
> library(Rmpfr)
Loading required package: gmp
Attaching package: ‘gmp’
The following objects are masked from ‘package:base’:
%*%, apply, crossprod, matrix, tcrossprod
C code of R package 'Rmpfr': GMP using 64 bits per limb
Attaching package: ‘Rmpfr’
The following object is masked from ‘package:gmp’:
outer
The following objects are masked from ‘package:stats’:
dbinom, dgamma, dnorm, dpois, pnorm
The following objects are masked from ‘package:base’:
cbind, pmax, pmin, rbind
> class(2)
[1] "numeric"
> class(2^32)
[1] "numeric"
> class(2^64)
[1] "numeric"
> Two <- mpfr(2, precBits=64)
> Two^64
1 'mpfr' number of precision 64 bits
[1] 18446744073709551616
> class(Two^64)
[1] "mpfr"
attr(,"package")
[1] "Rmpfr"
> Two^64 - 1
1 'mpfr' number of precision 64 bits
[1] 18446744073709551615
> getPrec(Two)
[1] 64
> getPrec(2.)
[1] 53
>
On Fri, Nov 13, 2020 at 8:45 PM Yousri Fanous <yousri.fanous using gmail.com> wrote:
>
> I want to calculate 2^64-1 which is
> 18446744073709551615
>
> I set the following options to prevent scientific notation
> options("scipen"=100, "digits"=4)
> > x<-2^64 -1
> > x
> [1] 18446744073709551616
>
> This is not correct. There seem to be still some approximation happening.
> How can I get the correct result?
>
> Yousri
> IBM Canada ltd
> Software developer
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list