NUMAL Section 1.1.5

BEGIN SECTION : 1.1.5 (April, 1974)

AUTHORS:        T.J.DEKKER, C.G. VAN DER LAAN.

CONTRIBUTOR:    P.A.BEENTJES.

INSTITUTE:      MATHEMATICAL CENTRE.

RECEIVED:       730715.

BRIEF DESCRIPTION:

    THIS SECTION CONTAINS TEN PROCEDURES.
    ELMVEC ADDS X TIMES THE VECTOR GIVEN IN ARRAY  B[SHIFT+L : SHIFT+U]
    TO THE VECTOR GIVEN IN ARRAY A[L:U].
    ELMCOL ADDS X TIMES THE COLUMN VECTOR GIVEN IN ARRAY B[L:U, J:J] TO
    THE COLUMN VECTOR GIVEN IN ARRAY A[L:U, I:I].
    ELMROW ADDS  X TIMES  THE ROW VECTOR GIVEN IN ARRAY  B[J:J, L:U] TO
    THE ROW VECTOR GIVEN IN ARRAY A[I:I, L:U].
    ELMVECCOL ADDS X TIMES THE COLUMN VECTOR GIVEN IN ARRAY B[L:U, I:I]
    TO THE VECTOR GIVEN IN ARRAY A[L:U].
    ELMCOLVEC  ADDS  X  TIMES  THE VECTOR  GIVEN IN ARRAY B[L:U] TO THE
    COLUMN VECTOR GIVEN IN ARRAY A[L:U, I:I].
    ELMVECROW ADDS X TIMES THE ROW VECTOR GIVEN IN ARRAY B[I:I, L:U] TO
    THE VECTOR GIVEN IN ARRAY A[L:U].
    ELMROWVEC  ADDS  X  TIMES  THE VECTOR  GIVEN IN ARRAY B[L:U] TO THE
    ROW VECTOR GIVEN IN ARRAY A[I:I, L:U].
    ELMCOLROW ADDS X TIMES THE ROW VECTOR GIVEN IN ARRAY B[J:J, L:U] TO
    THE COLUMN VECTOR GIVEN IN ARRAY A[L:U, I:I].
    ELMROWCOL ADDS X TIMES THE COLUMN VECTOR GIVEN IN ARRAY B[L:U, J:J]
    TO THE ROW VECTOR GIVEN IN ARRAY A[I:I, L:U].
    MAXELMROW ADDS X TIMES THE ROW VECTOR GIVEN IN ARRAY B[J:J, L:U] TO
    THE ROW VECTOR GIVEN IN ARRAY A[I:I, L:U].
    MOREOVER, MAXELMROW:= THE  VALUE  OF  THE  SECOND  SUBSCRIPT  OF AN
    ELEMENT  OF  THE  NEW  ROW VECTOR  IN  ARRAY A  WHICH IS OF MAXIMUM
    ABSOLUTE VALUE.
    IF, HOWEVER, L > U, THEN MAXELMROW:= L.

KEYWORDS:

    ELEMENTARY PROCEDURE,
    VECTOR OPERATIONS,
    ELIMINATION.


SUBSECTION: ELMVEC.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMVEC(L, U, SHIFT, A, B, X); "VALUE" L,U,SHIFT,X;
    "INTEGER" L,U,SHIFT; "REAL" X; "ARRAY" A,B;
    "CODE" 34020;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    SHIFT:  <ARITHMETIC EXPRESSION>;
            INDEX-SHIFTING PARAMETER OF THE VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[L : U], B[L + SHIFT : U + SHIFT];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMCOL.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMCOL(L, U, I, J, A, B, X); "VALUE" L,U,I,J,X;
    "INTEGER" L,U,I,J; "REAL" X; "ARRAY" A,B;
    "CODE" 34023;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            COLUMN-INDEX OF THE COLUMN VECTOR A;
    J:      <ARITHMETIC EXPRESSION>;
            COLUMN-INDEX OF THE COLUMN VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[L : U, I : I], B[L : U, J : J];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMROW.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMROW(L, U, I, J, A, B, X); "VALUE" L,U,I,J,X;
    "INTEGER" L,U,I,J; "REAL" X; "ARRAY" A,B;
    "CODE" 34024;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR A;
    J:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[I : I, L : U], B[J : J, L : U];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMVECCOL.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMVECCOL(L, U, I, A, B, X); "VALUE" L,U,I,X;
    "INTEGER" L,U,I; "REAL" X; "ARRAY" A,B;
    "CODE" 34021;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            COLUMN-INDEX OF THE COLUMN VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[L : U], B[L : U, I : I];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION ELMCOLVEC.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMCOLVEC(L, U, I, A, B, X); "VALUE" L,U,I,X;
    "INTEGER" L,U,I; "REAL" X; "ARRAY" A,B;
    "CODE" 34022;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            COLUMN-INDEX OF THE COLUMN VECTOR A;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[L : U, I : I], B[L : U];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMVECROW.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMVECROW(L, U, I, A, B, X); "VALUE" L,U,I,X;
    "INTEGER" L,U,I; "REAL" X; "ARRAY" A,B;
    "CODE" 34026;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[L : U], B[I : I, L : U];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMROWVEC.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMROWVEC(L, U, I, A, B, X); "VALUE" L,U,I,X;
    "INTEGER" L,U,I; "REAL" X; "ARRAY" A,B;
    "CODE" 34027;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR A;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[I : I, L : U], B[L : U];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMCOLROW.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMCOLROW(L, U, I, J, A, B, X); "VALUE" L,U,I,J,X;
    "INTEGER" L,U,I,J; "REAL" X; "ARRAY" A,B;
    "CODE" 34029;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            COLUMN-INDEX OF THE COLUMN VECTOR A;
    J:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[L : U, I : I], B[J : J, L : U],  WHEN  A = B THEN
            CORRECT  ELIMINATION  IS GUARANTEED  ONLY WHEN  THE ROW AND
            COLUMN ARE DISJUNCT;
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: ELMROWCOL.

CALLING SEQUENCE:

    HEADING:
    "PROCEDURE" ELMROWCOL(L, U, I, J, A, B, X); "VALUE" L,U,I,J,X;
    "INTEGER" L,U,I,J; "REAL" X; "ARRAY" A,B;
    "CODE" 34028;

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR A;
    J:      <ARITHMETIC EXPRESSION>;
            COLUMN-INDEX OF THE COLUMN VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[I : I, L : U], B[L : U, J : J],  WHEN  A = B THEN
            CORRECT  ELIMINATION  IS GUARANTEED  ONLY WHEN  THE ROW AND
            COLUMN ARE DISJUNCT;
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.


SUBSECTION: MAXELMROW.

CALLING SEQUENCE:

    HEADING:
    "INTEGER" "PROCEDURE" MAXELMROW(L, U, I, J, A, B, X);
    "VALUE" L,U,I,J,X; "INTEGER" L,U,I,J; "REAL" X; "ARRAY" A,B;
    "CODE" 34025;

    MAXELMROW DELIVERS THE INDEX  OF THE MAXIMAL ELEMENT AFTER ELIMINA-
            TION STEP IN ARRAY A.

    FORMAL PARAMETERS:
    L,U:    <ARITHMETIC EXPRESSION>;
            LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
    I:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR A;
    J:      <ARITHMETIC EXPRESSION>;
            ROW-INDEX OF THE ROW VECTOR B;
    A,B:    <ARRAY IDENTIFIER>;
            "ARRAY" A[I : I, L : U], B[I : I, L : U];
    X:      <ARITHMETIC EXPRESSION>;
            ELIMINATION FACTOR.

LANGUAGE: COMPASS.

REFERENCES:

    [1].T.J.DEKKER.
        ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 1,
        MATHEMATICAL CENTRE TRACT 22, AMSTERDAM (1970).

SOURCE TEXT(S):

THE FOLLOWING PROCEDURES ARE WRITTEN IN COMPASS, AN EQUIVALENT ALGOL 60
TEXT OF THESE COMPASS ROUTINES IS GIVEN.

    ELMVEC
    ELMROW
    ELMVECCOL
    ELMCOLVEC
    MAXELMROW

"CODE" 34020;

"CODE" 34023;

"CODE" 34024;

"CODE" 34021;

"CODE" 34022;

"CODE" 34026;
"CODE" 34027;

"CODE" 34029;

"CODE" 34028;

"CODE" 34025;