#### D.3.1.16 gauss_row

Procedure from library `matrix.lib` (see matrix_lib).

Usage:
  gauss_row(A [,e]); A matrix, e any type

Return:
  - a matrix B, if called with one argument; B is the complete row- reduced lower-triangular normal form of A if A is constant, (resp. as far as this is possible if A is a polynomial matrix; no division by polynomials).
  - a list L of two matrices, if called with two arguments; L satisfies transpose(L[2])*A=transpose(L[1])
  with L[1] the row-reduced form of A
  and L[2] the transformation matrix.

Note:
  * This procedure just applies gauss_col to the transposed matrix. The transformation matrix is obtained by applying lift. This should be faster than the procedure rowred.
  * It should only be used with exact coefficient field (there is no pivoting and rounding error treatment).
  * Parameters are allowed. Hence, if the entries of A are parameters, B is the row-reduced form of A over the rational function field.

Example:

    LIB "matrix.lib";
    ring r=(0,a,b),(A,B,C),dp;
    matrix m[6][8]=
    0, 0,  b*B, -A,-4C,2A,0, 0,
    2C,-4C,-A,B, 0,  B, 3B,AB,
    0,a*A,  0, 0, B,  0, 0, 0,
    0, 0,  0, 0, 2,  0, 0, 2A,
    0, 0,  0, 0, 0,  0, 2b, A,
    0, 0,  0, 0, 0,  0, 0, 2a;"";
    ==>
    print(gauss_row(m));"";
    ==> 0,  A,   0,      0,     0,0,0,0,
    ==> 0,  0,   0,      0,     1,0,0,0,
    ==> 2*C,-4*C,-A,     B,     0,B,0,0,
    ==> 0,  0,   (b)/2*B,-1/2*A,0,A,0,0,
    ==> 0,  0,   0,      0,     0,0,1,0,
    ==> 0,  0,   0,      0,     0,0,0,1
    ==>
    ring S=0,x,dp;
    matrix A[4][5] =  3, 1,1,-1,2,
    13, 8,6,-7,1,
    14,10,6,-7,1,
    7, 4,3,-3,3;
    list L=gauss_row(A,1);
    print(L[1]);
    ==> 1/2,-7/3,-19/6,5/6,
    ==> 1,  0,   0,    0,
    ==> 0,  1,   0,    0,
    ==> 0,  0,   1,    0,
    ==> 0,  0,   0,    1
    print(L[2]);
    ==> 0,   -6,  -5,  1,
    ==> -1/2,2/3, -1/6,-1/6,
    ==> 1/2, -5/3,-5/6,1/6,
    ==> 0,   13/3,11/3,-1/3

See also: rowred.

User manual for Singular version 4-0-3, 2016, generated by texi2html.