NUMAL Section 3.1.1.1.1.1.3

BEGIN SECTION : 3.1.1.1.1.1.3 (May, 1974)

AUTHORS: J. C. P. BUS AND T. J. DEKKER.

CONTRIBUTOR: J.C.P. BUS AND P. A. BEENTJES.

INSTITUTE: MATHEMATICAL CENTRE.

RECEIVED: 730915.

BRIEF DESCRIPTION:

    THIS SECTION CONTAINS FIVE PROCEDURES:
    SOL SOLVES THE LINEAR SYSTEM WHOSE MATRIX HAS BEEN TRIANGULARLY
    DECOMPOSED BY DEC;
    DECSOL SOLVES A LINEAR SYSTEM WHOSE ORDER IS SMALL RELATIVE TO THE
    NUMBER OF BINARY DIGITS IN THE NUMBER REPRSENTATION;
    SOLELM SOLVES A LINEAR SYSTEM WHOSE MATRIX HAS BEEN TRIANGULARLY
    DECOMPOSED BY GSSELM OR GSSERB(SECTION 3.1.1.1.1.1.1.).
    GSSSOL SOLVES A LINEAR SYSTEM;
    GSSSOLERB  SOLVES  A  LINEAR  SYSTEM  AND  CALCULATES  A  ROUGH
    UPPERBOUND FOR THE RELATIVE ERROR IN THE CALCULATED SOLUTION;

    THE
    DIFFERENCE BETWEEN  DECSOL ON THE ONE SIDE AND GSSSOL AND GSSSOLERB
    ON  THE  OTHER  SIDE  LIES  IN  THE  METHOD  USED   FOR  TRIANGULAR
    DECOMPOSITION,  PARTICULARLY IN THE PIVOTING STRATEGY;  DECSOL USES
    DEC,  GSSSOL  AND  GSSSOLERB  USE  GSSELM TO PERFORM THE TRIANGULAR
    DECOMPOSITION (SECTION 3.1.1.1.1.1.1); SINCE, IN EXCEPTIONAL CASES,
    DEC  MAY YIELD USELESS RESULTS,  ONE IS ADVISED  TO USE  GSSSOL  OR
    GSSSOLERB; HOWEVER, IF THE ORDER OF THE LINEAR SYSTEM IS VERY SMALL
    RELATIVE  TO   THE  NUMBER   OF   BINARY  DIGITS   IN   THE  NUMBER
    REPRESENTATION, THEN DECSOL ALSO MAY BE USED.

KEYWORDS:

    ALGEBRAIC EQUATIONS,
    LINEAR SYSTEMS.


SUBSECTION: SOL .

CALLING SEQUENCE:

    THE HEADING OF THIS PROCEDURE IS:
    "PROCEDURE" SOL(A, N, P, B); "VALUE" N;
    "INTEGER" N; "ARRAY" A, B; "INTEGER" "ARRAY" P;
    "CODE" 34051;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N, 1:N];
            ENTRY:  THE TRIANGULARLY  DECOMPOSED FORM  OF THE MATRIX OF
                    THE  LINEAR  SYSTEM  AS  PRODUCED BY  DEC  (SECTION
                    3.1.1.1.1.1.1);
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE MATRIX;
    P:      <ARRAY IDENTIFIER>;
            "INTEGER""ARRAY" P[1:N];
            ENTRY:THE PIVOTAL INDICES, AS PRODUCED BY DEC.
    B:      <ARRAY IDENTIFIER>;
            "ARRAY" B[1:N];
            ENTRY:  THE RIGHT-HAND SIDE OF THE LINEAR SYSTEM;
            EXIT:   THE SOLUTION OF THE LINEAR SYSTEM.

PROCEDURES USED:

    MATVEC = CP34011.

RUNNING TIME: PROPORTIONAL TO N ** 2.

LANGUAGE:   ALGOL 60.

METHOD AND PERFORMANCE:

    SOL SHOULD BE CALLED AFTER  DEC (SECTION 3.1.1.1.1.1.1)  AND SOLVES
    THE LINEAR SYSTEM WITH A MATRIX, WHOSE TRIANGULARLY DECOMPOSED FORM
    AS PRODUCED BY  DEC  IS GIVEN IN ARRAY  A, AND A RIGHT-HAND SIDE AS
    GIVEN IN ARRAY B; SOL LEAVES A AND P UNALTERED,  SO, AFTER ONE CALL
    OF DEC, SEVERAL CALLS OF SOL MAY FOLLOW FOR SOLVING SEVERAL SYSTEMS
    HAVING THE SAME MATRIX BUT DIFFERENT RIGHT-HAND SIDES.

EXAMPLE OF USE: SEE DECSOL (THIS SECTION).


SUBSECTION: DECSOL   .

CALLING SEQUENCE:

    THE HEADING OF THIS PROCEDURE IS:
    "PROCEDURE" DECSOL(A, N, AUX, B); "VALUE" N;
    "INTEGER" N; "ARRAY" A, AUX, B;
    "CODE" 34301;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N, 1:N];
            ENTRY:THE N-TH ORDER MATRIX;
            EXIT: THE  CALCULATED  LOWER-TRIANGULAR  MATRIX  AND  UNIT
            UPPERTRIANGULAR  MATRIX  WITH ITS  UNIT  DIAGONAL  OMITTED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE MATRIX;
    AUX:    <ARRAY IDENTIFIER>;
            "ARRAY" AUX[1:3];
            ENTRY:
            AUX[2]: A RELATIVE TOLERANCE;  A REASONABLE CHOICE FOR THIS
                    VALUE  IS  AN ESTIMATE OF THE RELATIVE PRECISION OF
                    THE MATRIX ELEMENTS;  HOWEVER,  IT  SHOULD  NOT  BE
                    CHOSEN SMALLER THAN THE MACHINE PRECISION;
            EXIT:
            AUX[1]: IF  R  IS THE NUMBER OF ELIMINATION STEPS PERFORMED
                    (SEE  AUX[3]),   THEN   AUX[1]  EQUALS   1  IF  THE
                    DETERMINANT OF THE PRINCIPAL SUBMATRIX  OF ORDER  R
                    IS POSITIVE, ELSE AUX[1] = -1;
            AUX[3]: THE  NUMBER  OF  ELIMINATION  STEPS  PERFORMED;  IF
                    AUX[3] < N  THEN  THE PROCESS  IS TERMINATED AND NO
                    SOLUTION WILL BE CALCULATED;
    B:      <ARRAY IDENTIFIER>;
            "ARRAY" B[1:N];
            ENTRY:  THE RIGHT-HAND SIDE OF THE LINEAR SYSTEM;
            EXIT:   IF AUX[3] = N,  THEN THE CALCULATED SOLUTION OF THE
                    LINEAR SYSTEM IS OVERWRITTEN ON B,  ELSE  B REMAINS
                    UNALTERED.

PROCEDURES USED:

    DEC = CP34300,
    SOL = CP34051.

REQUIRED CENTRAL MEMORY:

    EXECUTION FIELD LENGTH: DECSOL DECLARES AN AUXILIARY ARRAY  OF TYPE
                            INTEGER AND ORDER N.

RUNNING TIME: PROPORTIONAL TO N ** 3.

LANGUAGE:   ALGOL 60.

METHOD AND PERFORMANCE:

    DECSOL  USES  DEC  TO PERFORM  THE TRIANGULAR DECOMPOSITION  OF THE
    MATRIX  AND  SOL  TO CALCULATE  THE SOLUTION  WITH FORWARD AND BACK
    SUBSTITUTION;  SINCE  DECSOL  MAY YIELD USELESS RESULTS,  EVEN  FOR
    WELL-CONDITIONED MATRICES (SEE DEC, SECTION 3.1.1.1.1.1.1),  DECSOL
    SHOULD ONLY BE USED IF THE ORDER OF THE MATRIX IS SMALL RELATIVE TO
    THE NUMBER  OF  BINARY  DIGITS  IN  THE  NUMBER REPRESENTATION;  IF
    AUX[3] < N, THEN THE EFFECT OF DECSOL IS MERELY THAT OF DEC.

EXAMPLE OF USE:

    LET A BE THE FOURTH ORDER SEGMENT OF THE HILBERT MATRIX AND B THE
    THIRD COLUMN OF A, THEN THE SOLUTION OF THE LINEAR SYSTEM
    AX = B IS GIVEN BY THE THIRD UNIT VECTOR AND MAY BE CALCULATED BY
    THE FOLLOWING PROGRAM:

    "BEGIN" "INTEGER" I, J;
        "ARRAY" A[1:4, 1:4], B[1:4], AUX[1:3];
        "PROCEDURE" LIST(ITEM); "PROCEDURE" ITEM;
        "BEGIN" "INTEGER" I;
            "FOR" I:= 1 "STEP" 1 "UNTIL" 4 "DO" ITEM(B[I]);
            "FOR" I:= 1 "STEP" 2 "UNTIL" 3 "DO" ITEM(AUX[I])
        "END" LIST;
        "PROCEDURE" LAYOUT;
        FORMAT("("/, "("SOLUTION:")"B+.15D"+3D,/,3(10B+.15D"+3D,/),
        "("SIGN(DET) = ")"+D,/,"("NUMBER OF ELIMINATIONSTEPS = ")"
        +D")");

        "FOR" I:= 1 "STEP" 1 "UNTIL" 4 "DO"
        "BEGIN" "FOR" J:= 1 "STEP" 1 "UNTIL" 4 "DO"
            A[I,J]:= 1 / (I + J - 1); B[I]:= A[I,3]
        "END";
        AUX[2]:= "-14;
        DECSOL(A, 4, AUX, B);
        OUTLIST(71, LAYOUT, LIST)
    "END"

    RESULTS:

    SOLUTION: +.000000000000000"+000
              +.000000000000000"+000
              +.100000000000000"+001
              +.000000000000000"+000
    SIGN(DET) = +1
    NUMBER OF ELIMINATIONSTEPS = +4


SUBSECTION: SOLELM  .

CALLING SEQUENCE:

    THE HEADING OF THIS PROCEDURE IS:
    "PROCEDURE" SOLELM(A, N, RI, CI, B); "VALUE" N;
    "INTEGER" N; "ARRAY" A, B; "INTEGER" "ARRAY" RI, CI;
    "CODE" 34061;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N, 1:N];
            ENTRY:  THE TRIANGULARLY  DECOMPOSED FORM  OF THE MATRIX OF
                    THE LINEAR SYSTEM AS  PRODUCED BY  GSSELM  (SECTION
                    3.1.1.1.1.1.1);
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE MATRIX;
    RI:     <ARRAY IDENTIFIER>;
            "INTEGER""ARRAY" RI[1:N];
            ENTRY:THE PIVOTAL ROW INDICES,  AS PRODUCED BY  GSSELM;
    CI:     <ARRAY IDENTIFIER>;
            "INTEGER""ARRAY" CI[1:N];
            ENTRY:THE PIVOTAL COLUMN INDICES, AS PRODUCED BY  GSSELM;
    B:      <ARRAY IDENTIFIER>;
            "ARRAY" B[1:N];
            ENTRY:  THE RIGHT-HAND SIDE OF THE LINEAR SYSTEM;
            EXIT:   THE SOLUTION OF THE LINEAR SYSTEM.

PROCEDURES USED:

    SOL = CP34051.

RUNNING TIME: PROPORTIONAL TO N ** 2.

LANGUAGE:   ALGOL 60.

METHOD AND PERFORMANCE:

    SOLELM   SHOULD  BE  CALLED  AFTER   GSSELM   OR   GSSERB  (SECTION
    3.1.1.1.1.1.1) AND SOLVES THE LINEAR SYSTEM WITH THE MATRIX,  WHOSE
    TRIANGULARLY  DECOMPOSED  FORM  AS PRODUCED BY  GSSELM  IS GIVEN IN
    ARRAY A, AND A RIGHT-HAND SIDE AS GIVEN IN ARRAY B;  SOLELM  LEAVES
    A,  RI AND CI  UNALTERED,  SO, AFTER ONE CALL OF GSSELM  OR GSSERB,
    SEVERAL CALLS OF  SOLELM  MAY FOLLOW  FOR  SOLVING  SEVERAL SYSTEMS
    HAVING THE SAME MATRIX  BUT DIFFERENT RIGHT-HAND SIDES.

EXAMPLE OF USE: SEE GSSSOL OR GSSSOLERB (THIS SECTION).


SUBSECTION: GSSSOL   .

CALLING SEQUENCE:

    THE HEADING OF THIS PROCEDURE IS:
    "PROCEDURE" GSSSOL(A, N, AUX, B); "VALUE" N;
    "INTEGER" N; "ARRAY" A, AUX, B;
    "CODE" 34232;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N, 1:N];
            ENTRY:THE N-TH ORDER MATRIX;
            EXIT: THE  CALCULATED  LOWER-TRIANGULAR  MATRIX  AND  UNIT
            UPPERTRIANGULAR  MATRIX  WITH ITS  UNIT  DIAGONAL  OMITTED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE MATRIX;
    AUX:    <ARRAY IDENTIFIER>;
            "ARRAY" AUX[1:7];
            ENTRY:
            AUX[2]: A RELATIVE TOLERANCE;  A REASONABLE CHOICE FOR THIS
                    VALUE  IS  AN ESTIMATE OF THE RELATIVE PRECISION OF
                    THE MATRIX ELEMENTS;  HOWEVER,  IT  SHOULD  NOT  BE
                    CHOSEN SMALLER THAN THE MACHINE PRECISION;
            AUX[4]: A VALUE WHICH IS USED FOR CONTROLLING PIVOTING (SEE
                    GSSELM, SECTION 3.1.1.1.1.1.1);
            EXIT:
            AUX[1]: IF  R  IS THE NUMBER OF ELIMINATION STEPS PERFORMED
                    (SEE  AUX[3]),   THEN   AUX[1]  EQUALS   1  IF  THE
                    DETERMINANT OF THE PRINCIPAL SUBMATRIX  OF ORDER  R
                    IS POSITIVE, ELSE AUX[1] = -1;
            AUX[3]: THE  NUMBER  OF  ELIMINATION  STEPS  PERFORMED;  IF
                    AUX[3] < N  THEN  THE PROCESS  IS TERMINATED AND NO
                    SOLUTION WILL HAVE BEEN CALCULATED;
            AUX[5]: THE  MODULUS  OF  AN ELEMENT  WHICH  IS  OF MAXIMUM
                    ABSOLUTE VALUE FOR THE MATRIX GIVEN IN ARRAY A;
            AUX[7]: AN UPPER BOUND FOR THE GROWTH (SEE GSSELM,  SECTION
                    3.1.1.1.1.1.1);
    B:      <ARRAY IDENTIFIER>;
            "ARRAY" B[1:N];
            ENTRY:  THE RIGHT-HAND SIDE OF THE LINEAR SYSTEM;
            EXIT:   IF AUX[3] = N,  THEN THE CALCULATED SOLUTION OF THE
                    LINEAR SYSTEM IS OVERWRITTEN ON B,  ELSE  B REMAINS
                    UNALTERED.

PROCEDURES USED:

    SOLELM  = CP34061,
    GSSELM  = CP34231.

REQUIRED CENTRAL MEMORY:

    EXECUTION FIELD LENGTH: GSSSOL  DECLARES  TWO  AUXILIARY  ARRAYS OF
                            TYPE INTEGER AND ORDER N.

RUNNING TIME: PROPORTIONAL TO N ** 3.

LANGUAGE:   ALGOL 60.

METHOD AND PERFORMANCE:

    GSSSOL USES  GSSELM (SECTION 3.1.1.1.1.1.1) TO PERFORM A TRIANGULAR
    DECOMPOSITION OF THE MATRIX AND  SOLELM (THIS SECTION) TO CALCULATE
    THE SOLUTION  OF THE GIVEN LINEAR SYSTEM;  IF AUX[3] < N,  THEN THE
    EFFECT OF GSSSOL IS MERELY THAT OF GSSELM.

EXAMPLE OF USE:

    LET A BE THE FOURTH ORDER SEGMENT OF THE HILBERT MATRIX AND B THE
    THIRD COLUMN OF A, THEN THE SOLUTION OF THE LINEAR SYSTEM
    AX = B IS GIVEN BY THE THIRD UNIT VECTOR AND MAY BE CALCULATED BY
    THE FOLLOWING PROGRAM:

    "BEGIN" "INTEGER" I, J;
        "ARRAY" A[1:4, 1:4], B[1:4], AUX[1:7];
        "PROCEDURE" LIST(ITEM); "PROCEDURE" ITEM;
        "BEGIN" "INTEGER" I;
            "FOR" I:= 1 "STEP" 1 "UNTIL" 4 "DO" ITEM(B[I]);
            "FOR" I:= 1 "STEP" 2 "UNTIL" 7 "DO" ITEM(AUX[I])
        "END" LIST;
        "PROCEDURE" LAYOUT;
        FORMAT("("/, "("SOLUTION:")"B+.15D"+3D,/,3(10B+.15D"+3D,/),
        "("SIGN(DET) = ")"+D,/,"("NUMBER OF ELIMINATIONSTEPS = ")"
        +D,/,"("MAX(ABS(A[I,J]))= ")"+.15D"+3D,/,
        "("UPPER BOUND GROWTH: ")"+.15D"+3D")");

        "FOR" I:= 1 "STEP" 1 "UNTIL" 4 "DO"
        "BEGIN" "FOR" J:= 1 "STEP" 1 "UNTIL" 4 "DO"
            A[I,J]:= 1 / (I + J - 1); B[I]:= A[I,3]
        "END";
        AUX[2]:= "-14; AUX[4]:= 8;
        GSSSOL(A, 4, AUX, B);
        OUTLIST(71, LAYOUT, LIST)
    "END"

    RESULTS:

    SOLUTION: +.888178419700120"-014
              -.497379915032070"-013
              +.100000000000010"+001
              +.000000000000000"+000
    SIGN(DET) = +1
    NUMBER OF ELIMINATIONSTEPS = +4
    MAX(ABS(A[I,J]))= +.100000000000000"+001
    UPPER BOUND GROWTH: +.159619047619050"+001


SUBSECTION: GSSSOLERB.

CALLING SEQUENCE:
    THE HEADING OF THIS PROCEDURE IS:
    "PROCEDURE" GSSSOLERB(A, N, AUX, B); "VALUE" N;
    "INTEGER" N; "ARRAY" A, AUX, B;
    "CODE" 34243;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N, 1:N];
            ENTRY:THE N-TH ORDER MATRIX;
            EXIT: THE  CALCULATED  LOWER-TRIANGULAR  MATRIX  AND  UNIT
            UPPERTRIANGULAR  MATRIX  WITH ITS  UNIT  DIAGONAL  OMITTED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE MATRIX;
    AUX:    <ARRAY IDENTIFIER>;
            "ARRAY" AUX[0:11];
            ENTRY:
            AUX[0]: THE MACHINE PRECISION;
            AUX[2]: A RELATIVE TOLERANCE;  A REASONABLE CHOICE FOR THIS
                    VALUE  IS  AN ESTIMATE OF THE RELATIVE PRECISION OF
                    THE MATRIX ELEMENTS;  HOWEVER,  IT  SHOULD  NOT  BE
                    CHOSEN SMALLER THAN THE MACHINE PRECISION;
            AUX[4]: A VALUE WHICH IS USED FOR CONTROLLING PIVOTING (SEE
                    GSSELM, SECTION 3.1.1.1.1.1.1);
            AUX[6]: AN UPPER BOUND  FOR  THE RELATIVE PRECISION  OF THE
                    GIVEN MATRIX ELEMENTS;
            EXIT:
            AUX[1]: IF  R  IS THE NUMBER OF ELIMINATION STEPS PERFORMED
                    (SEE  AUX[3]),   THEN   AUX[1]  EQUALS   1  IF  THE
                    DETERMINANT OF THE PRINCIPAL SUBMATRIX  OF ORDER  R
                    IS POSITIVE, ELSE AUX[1] = -1;
            AUX[3]: THE  NUMBER  OF  ELIMINATION  STEPS  PERFORMED;  IF
                    AUX[3] < N  THEN  THE PROCESS  IS TERMINATED AND NO
                    SOLUTION OR ERROR BOUND WILL HAVE BEEN CALCULATED;
            AUX[5]: THE  MODULUS  OF  AN ELEMENT  WHICH  IS  OF MAXIMUM
                    ABSOLUTE VALUE FOR THE MATRIX GIVEN IN ARRAY A;
            AUX[7]: AN UPPER BOUND FOR THE GROWTH (SEE GSSELM,  SECTION
                    3.1.1.1.1.1.1);
            AUX[9]: IF AUX[3] = N, THEN AUX[9] WILL EQUAL THE 1-NORM OF
                    THE INVERSE MATRIX, ELSE AUX[9] WILL BE UNDEFINED;
            AUX[11]: IF AUX[3] = N THEN THE VALUE OF AUX[11]  WILL BE A
                    ROUGH  UPPER BOUND  FOR  THE RELATIVE ERROR  IN THE
                    CALCULATED  SOLUTION  OF  THE  GIVEN LINEAR SYSTEM,
                    ELSE  AUX[11]  WILL BE UNDEFINED;  IF NO USE CAN BE
                    MADE OF THE FORMULA FOR THE ERROR BOUND AS GIVEN IN
                    SECTION 3.1.1.1.1.1.1 (SUBSECTION ERBELM),  BECAUSE
                    OF  A  VERY  BAD  CONDITION  OF  THE  MATRIX,  THEN
                    AUX[11]:= -1;
    B:      <ARRAY IDENTIFIER>;
            "ARRAY" B[1:N];
            ENTRY:  THE RIGHT-HAND SIDE OF THE LINEAR SYSTEM;
            EXIT:   IF AUX[3] = N,  THEN THE CALCULATED SOLUTION OF THE
                    LINEAR SYSTEM, ELSE  B REMAINS UNALTERED.

PROCEDURES USED:

    SOLELM  = CP34061,
    GSSERB  = CP34242.

REQUIRED CENTRAL MEMORY:

    EXECUTION FIELD LENGTH: GSSSOLERB  DECLARES TWO AUXILIARY ARRAYS OF
                            TYPE INTEGER AND ORDER N.

RUNNING TIME: PROPORTIONAL TO N ** 3.

LANGUAGE:   ALGOL 60.

METHOD AND PERFORMANCE:

    GSSSOLERB  USES  GSSERB  (SECTION  3.1.1.1.1.1.1)  TO  PERFORM  THE
    TRIANGULAR DECOMPOSITION OF THE MATRIX  AND  TO CALCULATE  AN UPPER
    BOUND  FOR THE RELATIVE ERROR  IN  THE CALCULATED SOLUTION  OF  THE
    GIVEN LINEAR SYSTEM, AND  SOLELM  (THIS SECTION)  TO CALCULATE THIS
    SOLUTION;  IF AUX[3] < N,  THEN THE EFFECT OF  GSSSOLERB  IS MERELY
    THAT OF GSSELM (SECTION 3.1.1.1.1.1.1).

EXAMPLE OF USE:

    LET A BE THE FOURTH ORDER SEGMENT OF THE HILBERT MATRIX AND B THE
    THIRD COLUMN OF A, THEN THE SOLUTION OF THE LINEAR SYSTEM
    AX = B IS GIVEN BY THE THIRD UNIT VECTOR AND THIS SOLUTION, AS
    WELL AS AN UPPER BOUND FOR THE RELATIVE ERROR IN THE CALCULATED ONE
    , MAY BE OBTAINED BY THE FOLLOWING PROGRAM:

    "BEGIN" "INTEGER" I, J;
        "ARRAY" A[1:4, 1:4], B[1:4], AUX[0:11];
        "PROCEDURE" LIST(ITEM); "PROCEDURE" ITEM;
        "BEGIN" "INTEGER" I;
            "FOR" I:= 1 "STEP" 1 "UNTIL" 4 "DO" ITEM(B[I]);
            "FOR" I:= 1 "STEP" 2 "UNTIL" 11 "DO" ITEM(AUX[I])
        "END" LIST;
        "PROCEDURE" LAYOUT;
        FORMAT("("/, "("SOLUTION:")"B+.15D"+3D,/,3(10B+.15D"+3D,/),
        "("SIGN(DET) = ")"+D,/,"("NUMBER OF ELIMINATIONSTEPS = ")"
        +D,/,"("MAX(ABS(A[I,J]))= ")"+.15D"+3D,/,
        "("UPPER BOUND GROWTH: ")"+.15D"+3D,/,
        "("1-NORM OF THE INVERSE MATRIX:")"B+.15D"+3D,/,
        "("UPPER BOUND REL. ERR. IN THE CALC. SOL.")"
        B+.15D"+3D")");
        "FOR" I:= 1 "STEP" 1 "UNTIL" 4 "DO"
        "BEGIN" "FOR" J:= 1 "STEP" 1 "UNTIL" 4 "DO"
            A[I,J]:= 1 / (I + J - 1); B[I]:= A[I,3]
        "END";
        AUX[0]:= AUX[2]:= "-14; AUX[4]:= 8; AUX[6]:= "-14;
        GSSSOLERB(A, 4, AUX, B);
        OUTLIST(71, LAYOUT, LIST)
    "END"

    RESULTS:

    SOLUTION: +.888178419700120"-014
              -.497379915032070"-013
              +.100000000000010"+001
              +.000000000000000"+000
    SIGN(DET) = +1
    NUMBER OF ELIMINATIONSTEPS = +4
    MAX(ABS(A[I,J]))= +.100000000000000"+001
    UPPER BOUND GROWTH: +.159619047619050"+001
    1-NORM OF THE INVERSE MATRIX: +.136199999998790"+005
    UPPER BOUND REL. ERR. IN THE CALC. SOL. +.277896269157090"-007

REFERENCES:

    [1] BUS, J. C. P.
        LINEAR SYSTEMS  WITH CALCULATION OF ERROR BOUNDS  AND ITERATIVE
        REFINEMENT (DUTCH).
        MATHEMATICAL CENTRE, AMSTERDAM, LR 3. 4. 19 (1972).
    [2] DEKKER, T. J.
        ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 1.
        MATHEMATICAL CENTRE, AMSTERDAM, TRACT 22 (1968).

SOURCE TEXT(S):

"CODE" 34051;
"CODE" 34301;
"CODE" 34061;
"CODE" 34232;
"CODE" 34243;