ArithmeticGMP {rcdd} | R Documentation |

## GMP Rational Arithmetic

### Description

Add, subtract, multiply, or divide one object to/from/by another using
GMP (GNU multiple precision) rational arithmetic.
Any size integers in the numerator and denominator are allowed.

### Usage

qpq(x, y)
qmq(x, y)
qxq(x, y)
qdq(x, y)
qmatmult(x, y)
qsum(x)
qprod(x)
qsign(x)
qneg(x)
qabs(x)
qinv(x)

### Arguments

`x,y` |
objects of type `"numeric"`
or `"character"` . If `"numeric"` are converted to rational
using `d2q` . Objects must have the same length. |

### Details

`qpq`

is “plus”,
`qmq`

is “minus”,
`qxq`

is “times”,
`qdq`

is “divide”.
Divide by zero is an error. There are no rational NA, NaN, Inf.
`qsum`

is vectorizing summation like `sum`

for ordinary numeric.
`qprod`

is vectorizing product like `prod`

for ordinary numeric.
`qsign`

is vectorizing sign like `sign`

for ordinary numeric.
`qmatmult`

is matrix multiplication like `%*%`

for ordinary
numeric; both arguments must be matrices.
`qneg`

is vectorizing negation like unary minus for ordinary numeric.
`qabs`

is vectorizing negation like `abs`

for ordinary numeric.
`qinv`

is vectorizing inversion like `1 / x`

for ordinary numeric.

### Value

an object of the same form as `x`

that is the sum, difference,
product, quotient, or sign or (for `qsum`

and `qprod`

)
a scalar that is the sum or product.

### See Also

`ConvertGMP`

### Examples

qmq("1/3", "1/2")
# note inexactness of floating point representations
qmq("1/5", 1/5)
qdq("1/5", 1/5)
qsum(c("1", "1/2", "1/4", "1/8"))
qprod(c("1", "1/2", "1/4", "1/8"))
qsign(c("-1", "1/2", "1/-4", "1/8"))
qmatmult(matrix(c("1", "2", "3", "4"), 2, 2),
matrix(c("1/1", "1/2", "1/3", "1/4"), 2, 2))
qneg(seq(-3, 3))

[Package

*rcdd* version 1.1

Index]