How to work with large numbers in R?

后端 未结 1 1547
轻奢々
轻奢々 2020-11-27 07:56

I would like to change the precision in a calculation of R. For example I would like to calculate x^6 with x = c(-2.5e+59, -5.6e+60). In order to c

相关标签:
1条回答
  • 2020-11-27 08:48

    As Livius points out in his comment, this is an issue with R (and in fact, most programming language), with how numbers are represented in binary.

    To work with extremely large/small floating point numbers, you can use the Rmpfr library:

    install.packages("Rmpfr")
    library("Rmpfr")
    x <- c(-2.5e+59, -5.6e+60)
    y <- mpfr(x, 6)  # the second number is how many precision **bits** you want - NB: not decimal places!
    y^6
    # 2 'mpfr' numbers of precision  6   bits 
    # [1] 2.50e356 3.14e364
    

    To work with numbers that are even larger than R can handle (e.g. exp(1800)) you can use the "Brobdingnag" package:

    install.packages("Brobdingnag")
    library("Brobdingnag")
    
    ## An example of a single number too large for R: 
    10^1000.7
    # [1] Inf
    
    ## Now using the Brobdingnag package:
    10^as.brob(1000.7)
    # [1] +exp(2304.2)
    
    0 讨论(0)
提交回复
热议问题