| LIB "linalg.lib";
ring r = 0,(x),dp;
matrix A[5][5] = 10, 4, 0, -9, 8,
-3, 6, -6, -4, 9,
0, 3, -1, -9, -8,
-4,-2, -6, -10,10,
-9, 5, -1, -6, 5;
list Z = U_D_O(A); //construct P,U,D,O s.t. P*A=U*D*O
print(Z[1]); //P
==> 1,0,0,0,0,
==> 0,1,0,0,0,
==> 0,0,1,0,0,
==> 0,0,0,1,0,
==> 0,0,0,0,1
print(Z[2]); //U
==> 1, 0, 0, 0, 0,
==> -3/10,1, 0, 0, 0,
==> 0, 5/12, 1, 0, 0,
==> -2/5, -1/18,-38/9,1, 0,
==> -9/10,43/36,37/9, -1049/2170,1
print(Z[3]); //D
==> 10,0, 0, 0, 0,
==> 0, 36/5,0, 0, 0,
==> 0, 0, 3/2,0, 0,
==> 0, 0, 0, -1085/27,0,
==> 0, 0, 0, 0, 6871/217
print(Z[4]); //O
==> 1,2/5,0, -9/10, 4/5,
==> 0,1, -5/6,-67/72, 19/12,
==> 0,0, 1, -149/36,-17/2,
==> 0,0, 0, 1, 216/217,
==> 0,0, 0, 0, 1
print(Z[1]*A); //P*A
==> 10,4, 0, -9, 8,
==> -3,6, -6,-4, 9,
==> 0, 3, -1,-9, -8,
==> -4,-2,-6,-10,10,
==> -9,5, -1,-6, 5
print(Z[2]*Z[3]*Z[4]); //U*D*O
==> 10,4, 0, -9, 8,
==> -3,6, -6,-4, 9,
==> 0, 3, -1,-9, -8,
==> -4,-2,-6,-10,10,
==> -9,5, -1,-6, 5
|