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.

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