Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: matimagemod
Section: linear_algebra
C-Name: matimagemod
Prototype: GGD&
Help: matimagemod(x,d,&U): basis of the image of the matrix x modulo d.
Doc: gives a Howell basis (unique representation for submodules of~$(\Z/d\Z)^n$)
for the image of the matrix $x$ modulo $d$ as columns of a matrix $H$. The
matrix $x$ must have \typ{INT} entries, and $d$ can be an arbitrary positive
integer. If $U$ is present, set it to a matrix such that~$AU = H$.
\bprog
? A = [2,1;0,2];
? matimagemod(A,6,&U)
%2 =
[1 0]
[0 2]
? U
%3 =
[5 1]
[3 4]
? (A*U)%6
%4 =
[1 0]
[0 2]
@eprog
\misctitle{Caveat} In general the number of columns of the Howell form is not
the minimal number of generators of the submodule. Example:
\bprog
? matimagemod([1;2],4)
%5 =
[2 1]
[0 2]
@eprog
\misctitle{Caveat 2} In general the matrix $U$ is not invertible, even if~$A$
and~$H$ have the same size. Example:
\bprog
? matimagemod([4,1;0,4],8,&U)
%6 =
[2 1]
[0 4]
? U
%7 =
[0 0]
[2 1]
@eprog