bigq | R Documentation |
Class "bigq"
encodes rationals encoded as ratios of arbitrary
large integers (via GMP).
A simple S3 class (internally a raw
vector), it has been
registered as formal (S4) class (via setOldClass
), too.
as.bigq(n, d = 1)
## S3 method for class 'bigq'
as.character(x, b=10,...)
## S3 method for class 'bigq'
as.double(x,...)
as.bigz.bigq(a, mod=NA)
is.bigq(x)
## S3 method for class 'bigq'
is.na(x)
## S3 method for class 'bigq'
print(x, quote=FALSE, initLine = TRUE, ...)
denominator(x)
numerator(x)
NA_bigq_
c_bigq(L)
n , d |
either integer, numeric or string value
(String value: either starting with |
a |
an element of class |
mod |
optional modulus to convert into biginteger |
x |
a “rational number” (vector), of class |
b |
base: from 2 to 36 |
... |
additional arguments passed to methods |
quote |
(for printing:) logical indicating if the numbers
should be quoted (as characters are); the default used to be
|
initLine |
(for printing:) logical indicating if an initial line (with the class and length or dimension) should be printed. |
L |
a |
as.bigq(x)
when x
is numeric
(aka
double
precision) calls the ‘GMP’ function
mpq_set_d()
which is documented to be exact (every finite double
precision number is a rational number).
as.bigz.bigq()
returns the smallest integers not less than the
corresponding rationals bigq.
NA_bigq_
is computed on package load time as as.bigq(NA)
.
An R object of (S3) class "bigq"
representing the parameter value.
Antoine Lucas
x <- as.bigq(21,6)
x
# 7 / 2
# Wow ! result is simplified.
y <- as.bigq(5,3)
# addition works !
x + y
# You can even try multiplication, division...
x * y / 13
# and, since May 2012,
x ^ 20
stopifnot(is.bigq(x), is.bigq(x + y),
x ^ 20 == as.bigz(7)^20 / 2^20)
# convert to string, double
as.character(x)
as.double(x)
stopifnot( is.na(NA_bigq_) )
# Depict the "S4-class" bigq, i.e., the formal (S4) methods:
if(require("Rmpfr")) # mostly interesting there
showMethods(class="bigq")
# an sapply() version that works for big rationals "bigq":
sapplyQ <- function(X, FUN, ...) c_bigq(lapply(X, FUN, ...))
# dummy example showing it works (here):
qq <- as.bigq(1, 1:999)
q1 <- sapplyQ(qq, function(q) q^2)
stopifnot( identical(q1, qq^2) )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.