NUMAL Section 1.1.8

BEGIN SECTION : 1.1.8 (October, 1975)

AUTHORS: C.G. VAN DER LAAN AND J.C.P. BUS.

CONTRIBUTOR: J.C.P. BUS.

INSTITUTE: MATHEMATICAL CENTRE.

RECEIVED: 740921.

BRIEF DESCRIPTION:

    INFNRMVEC CALCULATES THE INFINITY-NORM OF A VECTOR;
    INFNRMROW CALCULATES THE INFINITY-NORM OF A ROW VECTOR;
    INFNRMCOL CALCULATES THE INFINITY-NORM OF A COLUMN VECTOR;
    INFNRMMAT CALCULATES THE INFINITY-NORM OF A MATRIX;
    ONENRMVEC CALCULATES THE ONE-NORM OF A VECTOR;
    ONENRMROW CALCULATES THE ONE-NORM OF A ROW VECTOR;
    ONENRMCOL CALCULATES THE ONE-NORM OF A COLUMN VECTOR;
    ONENRMMAT CALCULATES THE ONE-NORM OF A MATRIX;
    ABSMAXMAT CALCULATES FOR A GIVEN MATRIX THE MODULUS OF AN ELEMENT
    WHICH IS OF MAXIMUM ABSOLUTE VALUE;

KEYWORDS:

    VECTOR NORMS,
    MATRIX NORMS.


SUBSECTION: INFNRMVEC.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" INFNRMVEC(L, U, K, A);
    "VALUE" L, U; "INTEGER" L, U, K; "ARRAY" A;
    "CODE" 31061;

    INFNRMVEC := MAX( ABS(A[I]), I= L, ..., U );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    L, U:   <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE INDEX OF THE
                  VECTOR A, RESPECTIVELY;
    K:      <VARIABLE>;
            EXIT:THE FIRST INDEX FOR WHICH ABS(A[I]), I = L, ..., U,
                 IS MAXIMAL;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[L:U].

PROCEDURES USED: NONE.


SUBSECTION: INFNRMROW.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" INFNRMROW(L, U, I, K, A);
    "VALUE" L, U, I; "INTEGER" L, U, I, K; "ARRAY" A;
    "CODE" 31062;

    INFNRMROW := MAX( ABS(A[I,J]), J= L, ..., U );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    L, U:   <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE COLUMN INDEX
                  OF THE ROW VECTOR A, RESPECTIVELY;
    I:      <ARITHMETIC EXPRESSION>;
            ENTRY:THE ROW INDEX;
    K:      <VARIABLE>;
            EXIT:THE FIRST INDEX FOR WHICH ABS(A[I,J]), J = L, ..., U,
                 IS MAXIMAL;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[I:I,L:U].

PROCEDURES USED: NONE.


SUBSECTION: INFNRMCOL.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" INFNRMCOL(L, U, J, K, A);
    "VALUE" L, U, J; "INTEGER" L, U, J, K; "ARRAY" A;
    "CODE" 31063;

    INFNRMCOL := MAX( ABS(A[I,J]), I= L, ..., U );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    L, U:   <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE ROW INDEX OF
                  THE COLUMN VECTOR A, RESPECTIVELY;
    J:      <ARITHMETIC EXPRESSION>;
            ENTRY:THE COLUMN INDEX;
    K:      <VARIABLE>;
            EXIT:THE FIRST INDEX FOR WHICH ABS(A[I,J]), I = L, ..., U,
                 IS MAXIMAL;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[L:U,J:J].

PROCEDURES USED: NONE.


SUBSECTION: INFNRMMAT.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" INFNRMMAT(LR, UR, LC, UC, KR, A);
    "VALUE" LR, UR, LC, UC; "INTEGER" LR, UR, LC, UC, KR; "ARRAY" A;
    "CODE" 31064;

    INFNRMMAT := MAX( ONENRMROW(LC, UC, I, A), I=LR, ..., UR );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    LR, UR: <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE ROW INDEX,
                  RESPECTIVELY;
    LC, UC: <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE COLUMN INDEX,
                  RESPECTIVELY;
    KR:     <VARIABLE>;
            EXIT:THE FIRST ROW INDEX FOR WHICH THE ONE-NORM IS MAXIMAL;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[LR:UR,LC:UC].

PROCEDURES USED: ONENRMROW.


SUBSECTION: ONENRMVEC.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" ONENRMVEC(L, U, A);
    "VALUE" L, U; "INTEGER" L, U; "ARRAY" A;
    "CODE" 31065;

    ONENRMVEC := SUM( ABS(A[I]), I= L, ..., U );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    L, U:   <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE INDEX OF THE
                  VECTOR A, RESPECTIVELY;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[L:U].

PROCEDURES USED: NONE.


SUBSECTION: ONENRMROW.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" ONENRMROW(L, U, I, A);
    "VALUE" L, U, I; "INTEGER" L, U, I; "ARRAY" A;
    "CODE" 31066;

    ONENRMROW := SUM( ABS(A[I,J]), J= L, ..., U );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    L, U:   <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE COLUMN INDEX
                  OF THE ROW VECTOR A, RESPECTIVELY;
    I:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE ROW INDEX;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[I:I,L:U].

PROCEDURES USED: NONE.


SUBSECTION: ONENRMCOL.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" ONENRMCOL(L, U, J, A);
    "VALUE" L, U, J; "INTEGER" L, U, J; "ARRAY" A;
    "CODE" 31067;

    ONENRMCOL := SUM( ABS(A[I,J]), I= L, ..., U );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    L, U:   <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE ROW INDEX OF
                  THE COLUMN VECTOR A, RESPECTIVELY;
    J:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE COLUMN INDEX;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[L:U,J:J].

PROCEDURES USED: NONE.


SUBSECTION: ONENRMMAT.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" ONENRMMAT(LR, UR, LC, UC, KC, A);
    "VALUE" LR, UR, LC, UC; "INTEGER" LR, UR, LC, UC, KC; "ARRAY" A;
    "CODE" 31068;

    ONENRMMAT := MAX(ONENRMCOL(LR, UR, J, A), J=LC, ..., UC);

    THE MEANING OF THE FORMAL PARAMETERS IS:
    LR, UR: <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE ROW INDEX,
                  RESPECTIVELY;
    LC, UC: <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE COLUMN INDEX,
                  RESPECTIVELY;
    KC:     <VARIABLE>;
            EXIT:THE FIRST COLUMN INDEX FOR WHICH THE ONE-NORM IS
                 MAXIMAL;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[LR:UR,LC:UC].

PROCEDURES USED: ONENRMCOL.


SUBSECTION: ABSMAXMAT.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "REAL" "PROCEDURE" ABSMAXMAT(LR, UR, LC, UC, KR, KC, A);
    "VALUE" LR, UR, LC, UC; "INTEGER" LR, UR, LC, UC, KR, KC;
    "ARRAY" A;
    "CODE" 31069;

    ABSMAXMAT := MAX( ABS(A[I,J]), I= LR, ..., UR, J= LC, ..., UC );

    THE MEANING OF THE FORMAL PARAMETERS IS:
    LR, UR: <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE ROW INDEX,
                  RESPECTIVELY;
    LC, UC: <ARITHMETIC EXPRESSION>;
            ENTRY:THE LOWER BOUND AND UPPER BOUND OF THE COLUMN INDEX,
                  RESPECTIVELY;
    KR, KC: <VARIABLE>;
            EXIT:THE ROW AND COLUMN INDEX OF AN ELEMENT FOR WHICH THE
                 MODULUS IS MAXIMAL;
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[LR:UR,LC:UC].

PROCEDURES USED: INFNRMCOL.

LANGUAGE: COMPASS.

METHOD AND PERFORMANCE:

    ELEMENTARY.

SOURCE TEXT(S):

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

"CODE" 31061;
"CODE" 31062;
"CODE" 31063;
"CODE" 31064;
"CODE" 31065;
"CODE" 31066;
"CODE" 31067;
"CODE" 31068;
"CODE" 31069;