R: Large sized rationals

bigq {gmp} | R Documentation

## 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)
    ## 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)

### Arguments

`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.

### Details

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

### Value

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

### Author(s)

Antoine Lucas

### References

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

### Examples

    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")

[Package gmp version 0.5-13.2 Index]