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 brobs: 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 (!)




[Package Brobdingnag version 1.2-9 Index]