| LIB "linalg.lib";
ring r=0,(x),dp;
matrix A[5][4]=1,3,-1,4,2,5,-1,3,1,3,-1,4,0,4,-3,1,-3,1,-5,-2;
print(A);
==> 1, 3,-1,4,
==> 2, 5,-1,3,
==> 1, 3,-1,4,
==> 0, 4,-3,1,
==> -3,1,-5,-2
list Z=gaussred(A); //construct P,U,S s.t. P*A=U*S
print(Z[1]); //P
==> 1,0,0,0,0,
==> 0,1,0,0,0,
==> 0,0,0,0,1,
==> 0,0,0,1,0,
==> 0,0,1,0,0
print(Z[2]); //U
==> 1, 0, 0, 0,0,
==> 2, 1, 0, 0,0,
==> -3,-10,1, 0,0,
==> 0, -4, 1/2,1,0,
==> 1, 0, 0, 0,1
print(Z[3]); //S
==> 1,3, -1,4,
==> 0,-1,1, -5,
==> 0,0, 2, -40,
==> 0,0, 0, 1,
==> 0,0, 0, 0
print(Z[4]); //rank
==> 4
print(Z[1]*A); //P*A
==> 1, 3,-1,4,
==> 2, 5,-1,3,
==> -3,1,-5,-2,
==> 0, 4,-3,1,
==> 1, 3,-1,4
print(Z[2]*Z[3]); //U*S
==> 1, 3,-1,4,
==> 2, 5,-1,3,
==> -3,1,-5,-2,
==> 0, 4,-3,1,
==> 1, 3,-1,4
|