Basic Arithmetic Operators for Large Integers ("bigz")
Addition, substraction, multiplication, (integer) division, remainder of division, multiplicative inverse, power and logarithm functions.
add.bigz(e1, e2) sub.bigz(e1, e2 = NULL) mul.bigz(e1, e2) div.bigz(e1, e2) divq.bigz(e1,e2) ## == e1 %/% e2 mod.bigz(e1, e2) ## == e1 %% e2 ## S3 method for class 'bigz' abs(x) inv.bigz(a, b,...)## == (1 / a) (modulo b) pow.bigz(e1, e2,...)## == e1 ^ e2 ## S3 method for class 'bigz' log(x, base=exp(1)) ## S3 method for class 'bigz' log2(x) ## S3 method for class 'bigz' log10(x)
| x | bigz, integer or string from an integer | 
| e1, e2, a,b | bigz, integer or string from an integer | 
| base | base of the logarithm; base e as default | 
| ... | Additional parameters | 
Operators can be used directly when objects are of class bigz: a + b, log(a), etc.
For details about the internal modulus state, and the rules
applied for arithmetic operations on big integers with a modulus,
see the bigz help page.
a / b  =  div(a,b) returns a rational number
unless the operands have a (matching) modulus where
a * b^-1 results.
a %/% b (or, equivalently, divq(a,b)) returns the
quotient of simple integer division (with truncation towards zero),
possibly re-adding a modulus at the end (but not using a
modulus like in a / b).
r <- inv.bigz(a, m), the multiplicative inverse of
a modulo m, corresponds to 1/a or a ^-1
from above when a has modulus m.  Note that
a not always has an inverse modulo m, in which case
r will be NA with a warning that can be turned
off via 
options("gmp:warnNoInv" = FALSE).
Apart from / (or div), where rational numbers
(bigq) may result, these functions return an object of
class "bigz", representing the result of the arithmetic
operation.
Immanuel Scholz and Antoine Lucas
The GNU MP Library, see https://gmplib.org
# 1+1=2
as.bigz(1) + 1
as.bigz(2)^10
as.bigz(2)^200
# if my.large.num.string is set to a number, this returns the least byte
(my.large.num.string <- paste(sample(0:9, 200, replace=TRUE), collapse=""))
mod.bigz(as.bigz(my.large.num.string), "0xff")
# power exponents can be up to MAX_INT in size, or unlimited if a
# bigz's modulus is set.
pow.bigz(10,10000)
## Modulo 11,   7 and 8 are inverses :
as.bigz(7, mod = 11) * 8 ## ==>  1  (mod 11)
inv.bigz(7, 11)## hence, 8
a <- 1:10
(i.a <- inv.bigz(a, 11))
d <- as.bigz(7)
a %/% d  # = divq(a, d)
a %%  d  # = mod.bigz (a, d)
(ii <- inv.bigz(1:10, 16))
## with 5 warnings (one for each NA)
op <- options("gmp:warnNoInv" = FALSE)
i2 <- inv.bigz(1:10, 16) # no warnings
(i3 <- 1 / as.bigz(1:10, 16))
i4 <- as.bigz(1:10, 16) ^ -1
stopifnot(identical(ii, i2),
	  identical(as.bigz(i2, 16), i3),
	  identical(i3, i4))
options(op)# revert previous options' settings
stopifnot(inv.bigz(7, 11) == 8,
          all(as.bigz(i.a, 11) * a == 1),
          identical(a %/% d, divq.bigz(1:10, 7)),
          identical(a %%  d, mod.bigz (a, d))
 )Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.