Brobdingnag-package {Brobdingnag} | R Documentation |
Very Large Numbers in R
Description
Very large numbers in R. Real numbers are held using their natural logarithms, plus a logical flag indicating sign. Functionality for complex numbers is also provided. The package includes a vignette that gives a step-by-step introduction to using S4 methods.
Details
The DESCRIPTION file:
Package: | Brobdingnag |
Type: | Package |
Title: | Very Large Numbers in R |
Version: | 1.2-9 |
Authors@R: | person(given=c("Robin", "K. S."), family="Hankin", role = c("aut","cre"), email="hankin.robin@gmail.com", comment = c(ORCID = "0000-0001-5982-0415")) |
Maintainer: | Robin K. S. Hankin <hankin.robin@gmail.com> |
Depends: | R (>= 2.13.0), methods, Matrix (>= 1.5-0) |
Description: | Very large numbers in R. Real numbers are held using their natural logarithms, plus a logical flag indicating sign. Functionality for complex numbers is also provided. The package includes a vignette that gives a step-by-step introduction to using S4 methods. |
Suggests: | cubature, testthat |
License: | GPL |
Repository: | CRAN |
URL: | https://github.com/RobinHankin/Brobdingnag |
Author: | Robin K. S. Hankin [aut, cre] (<https://orcid.org/0000-0001-5982-0415>) |
Index of help topics:
Arith-methods Methods for Function Arith in package Brobdingnag Brobdingnag-package Very Large Numbers in R Compare-methods Methods for Function Compare in Package Brobdingnag Re Real and imaginary manipulation [.brob Extract or Replace Parts of brobs or glubs abs Various logarithmic and circular functions for brobs as.numeric Coerces to numeric or complex form brob Brobdingnagian numbers brob-class Class "brob" brobmat Brobdingnagian matrices brobmat-class Class '"brobmat"' brobmat.mult Brobdingagian matrix arithmetic cbrob Combine Brobdingnagian vectors getP Get and set methods for brob objects glub Glubbdubdribian numbers: complex numbers with Brobdingnagian real and imaginary parts glub-class Class "glub" index-class Class '"index"' infinite Infinite brobs and glubs length Get lengths of brobs and glubs logic.brob Logical operations on brobs plot Basic plotting of Brobs print.brob Methods for printing brobs and glubs sum Various summary statistics for brobs and glubs swift-class Class "swift"
Real numbers are represented by two objects: a real, holding the
logarithm of their absolute values; and a logical, indicating the
sign. Multiplication and exponentiation are easy: the challenge is
addition. This is achieved using the (trivial) identity
\log(e^x+e^y)=x+\log(1+e^{y-x})
where, WLOG, y<x
.
Complex numbers are stored as a pair of brob
s: objects of class
glub
.
The package is a simple example of S4 methods.
However, it could be viewed as a cautionary tale: the underlying R concepts are easy yet the S4 implementation is long and difficult. I would not recommend using S4 methods for a package as simple as this; S3 methods would have been perfectly adequate. I would suggest that S4 methods should only be used when S3 methods are demonstrably inadequate.
Author(s)
NA
Maintainer: Robin K. S. Hankin <hankin.robin@gmail.com>
References
R. K. S. Hankin 2007. “Very Large Numbers in R: Introducing Package Brobdingnag”. R News, volume 7, number 3, pages 15-16
Examples
googol <- as.brob(10)^100
googol
googol + googol/2
1/(googol + 1e99)
(1:10)^googol
googolplex <- 10^googol
googolplex
googolplex * googol # practically the same as googolplex (!)