# This function computes the inverse of a square matrix. Are you
# sure you want to use this? It's usually much better to use `solve'.
inv = function (M; options)
{
local (x);
M = [ M ];
if (M.nr != M.nc)
{
message ("run time error: Matrix must be square to invert.");
exception ();
}
x = solve (M; ident (M.nr); options);
x.rid = M.cid;
x.cid = M.rid;
return x;
};