gmp (version 0.5-13)

bigq: Large sized rationals

Description

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.

Usage

as.bigq(n, d = 1) "as.character"(x, b=10,...) "as.double"(x,...) as.bigz.bigq(a, mod=NA) is.bigq(x) "is.na"(x) "print"(x, quote=FALSE, initLine = TRUE, ...) denominator(x) numerator(x)

Arguments

x, e1, e2
Object or vector of class bigq
n,d
either integer, numeric or string value (String value: either starting with 0x for hexadecimal, 0b for binary or without prefix for decimal values. Any format error results in 0). n stands for numerator, d for denominator
a
an element of class "bigq"
mod
optional modulus to convert into biginteger
x
a “rational number” (vector), of class "bigq".
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 TRUE (implicitly) till 2011.
initLine
(for printing:) logical indicating if an initial line (with the class and length or dimension) should be printed.

Value

An R object of (S3) class "bigq" representing the parameter value.

Details

as.bigz.bigq() returns the smallest integers not less than the corresponding rationals bigq.

References

http://mulcyber.toulouse.inra.fr/projects/gmp/

Examples

Run this code
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)

# Depict the "S4-class" bigq, i.e., the formal (S4) methods:
if(require("Rmpfr")) # mostly interesting there
  showMethods(class="bigq")

Run the code above in your browser using DataLab