var [const] GSL=Import("zklGSL"); // libGSL (GNU Scientific Library) fcn luTask(A){ A.LUDecompose(); // in place, contains L & U L:=A.copy().lowerTriangle().setDiagonal(0,0,1); U:=A.copy().upperTriangle(); return(L,U); } A:=GSL.Matrix(3,3).set(1,3,5, 2,4,7, 1,1,0); // example 1 L,U:=luTask(A); println("L:\n",L.format(),"\nU:\n",U.format()); A:=GSL.Matrix(4,4).set(11.0, 9.0, 24.0, 2.0, // example 2 1.0, 5.0, 2.0, 6.0, 3.0, 17.0, 18.0, 1.0, 2.0, 5.0, 7.0, 1.0); L,U:=luTask(A); println("L:\n",L.format(8,4),"\nU:\n",U.format(8,4));