This generic function solves the equation *a \%*\% x = b* for
*x*, where *b* can be either a vector or a matrix.

If a and b are rational, return is a rational matrix.

If a and b are big integers (of class bigz) solution is in Z/nZ if there is a common modulus, or a rational matrix if not.

1 2 3 4 |

`a,b` |
A element of class bigz or bigq |

`...` |
Unused |

It uses the Gauss and trucmuch algo ... (to be detailled).

If a and b are rational, return is a rational matrix.

If a and b are big integers (of class bigz) solution is in Z/nZ if there is a common modulus, of a rational matrix if not.

Antoine Lucas

`solve`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | ```
x <- matrix(1:4,2,2) ## standard solve :
solve(x)
q <- as.bigq(x) ## solve with rational
solve(q)
z <- as.bigz(x)
modulus(z) <- 7 ## solve in Z/7Z :
solve(z)
b <- c(1,3)
solve(q,b)
solve(z,b)
## Inversion of ("non-trivial") rational matrices :
A <- rbind(c(10, 1, 3),
c( 4, 2, 10),
c( 1, 8, 2))
(IA.q <- solve(as.bigq(A))) # fractions..
stopifnot(diag(3) == A %*% IA.q)# perfect
set.seed(5); B <- matrix(round(9*runif(5^2, -1,1)), 5)
B
(IB.q <- solve(as.bigq(B)))
stopifnot(diag(5) == B %*% IB.q, diag(5) == IB.q %*% B,
identical(B, asNumeric(solve(IB.q))))
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.