NUMAL Section 1.1.6
BEGIN SECTION : 1.1.6 (April, 1974)
AUTHOR: T.J.DEKKER.
CONTRIBUTOR: P.A.BEENTJES.
INSTITUTE: MATHEMATICAL CENTRE.
RECEIVED: 730715.
BRIEF DESCRIPTION:
THIS SECTION CONTAINS SIX PROCEDURES.
ICHVEC INTERCHANGES THE ELEMENTS OF THE VECTOR GIVEN IN ARRAY
A[L:U] AND ARRAY A[SHIFT + L : SHIFT + U].
ICHCOL INTERCHANGES THE ELEMENTS OF THE COLUMN VECTORS GIVEN IN
ARRAY A[L:U, I:I] AND ARRAY A[L:U, J:J].
ICHROW INTERCHANGES THE ELEMENTS OF THE ROW VECTORS GIVEN IN ARRAY
A[I:I, L:U] AND ARRAY A[J:J, L:U].
ICHROWCOL INTERCHANGES THE ELEMENTS OF THE ROW VECTOR GIVEN IN
ARRAY A[I:I, L:U] AND THE COLUMN VECTOR GIVEN IN ARRAY A[L:U, J:J].
ICHSEQVEC INTERCHANGES THE ELEMENTS OF THE VECTORS GIVEN IN ARRAY
A[IL : IL + (U + L - 1)*(U - L)//2] AND ARRAY A[SHIFT+L : SHIFT+U],
WHERE THE ELEMENTS OF THE FIRST VECTOR ARE A[IL+(J+L-1)*(J-L)//2]
FOR J = L,..., U.
ICHSEQ INTERCHANGES THE ELEMENTS OF THE VECTORS GIVEN
IN ARRAY A[IL : IL + (U + L - 1) * (U - L) // 2] AND ARRAY
A[SHIFT + IL : SHIFT + IL + (U + L - 1) * (U - L) // 2] WHERE THE
ELEMENTS OF THE VECTORS ARE A[IL + (J + L - 1) * (J - L) // 2] AND
A[SHIFT + IL + (J + L - 1) * (J - L) // 2] FOR J = L ,..., U .
KEYWORDS:
ELEMENTARY PROCEDURE,
VECTOR OPERATIONS,
INTERCHANGING.
SUBSECTION: ICHVEC.
CALLING SEQUENCE:
HEADING:
"PROCEDURE" ICHVEC(L, U, SHIFT, A); "VALUE" L,U,SHIFT;
"INTEGER" L,U,SHIFT; "ARRAY" A;
"CODE" 34030;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
SHIFT: <ARITHMETIC EXPRESSION>;
INDEX-SHIFTING PARAMETER;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q]; P AND Q SHOULD SATISFY: P <= L, Q >= U,
P <= L + SHIFT AND Q >= U + SHIFT.
LANGUAGE: COMPASS.
SUBSECTION: ICHCOL.
CALLING SEQUENCE:
HEADING:
"PROCEDURE" ICHCOL(L, U, I, J, A); "VALUE" L,U,I,J;
"INTEGER" L,U,I,J; "ARRAY" A;
"CODE" 34031;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
I,J: <ARITHMETIC EXPRESSION>;
COLUMN-INDICES OF THE COLUMN VECTORS OF ARRAY A;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[L : U, P : Q]; P AND Q SHOULD SATISFY: P <= I,
P <= J, Q >= I AND Q >= J.
LANGUAGE: COMPASS.
SUBSECTION: ICHROW.
CALLING SEQUENCE:
HEADING:
"PROCEDURE" ICHROW(L, U, I, J, A); "VALUE" L,U,I,J;
"INTEGER" L,U,I,J; "ARRAY" A;
"CODE" 34032;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
I,J: <ARITHMETIC EXPRESSION>;
ROW-INDICES OF THE ROW VECTORS OF ARRAY A;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q, L : U]; P AND Q SHOULD SATISFY: P <= I,
P <= J, Q >= I AND Q >= J.
LANGUAGE: COMPASS.
SUBSECTION: ICHROWCOL.
CALLING SEQUENCE:
HEADING:
"PROCEDURE" ICHROWCOL(L, U, I, J, A); "VALUE" L,U,I,J;
"INTEGER" L,U,I,J; "ARRAY" A;
"CODE" 34033;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
I: <ARITHMETIC EXPRESSION>;
ROW-INDEX OF THE ROW VECTOR OF ARRAY A;
J: <ARITHMETIC EXPRESSION>;
COLUMN-INDEX OF THE COLUMN VECTOR OF ARRAY A;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q, R : S]; P, Q, R AND S SHOULD SATISFY:
P <= I, P <= L, Q >= I, Q >= U, R <= J, R <= L, S >= J AND
S >= U, FURTHERMORE THE ROW AND COLUMN TO BE INTERCHANGED
SHOULD BE DISJUNCT.
LANGUAGE: COMPASS.
SUBSECTION: ICHSEQVEC.
CALLING SEQUENCE:
HEADING:
"PROCEDURE" ICHSEQVEC(L, U, IL, SHIFT, A); "VALUE" L,U,IL,SHIFT;
"INTEGER" L,U,IL,SHIFT; "ARRAY" A;
"CODE" 34034;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
IL: <ARITHMETIC EXPRESSION>;
LOWER BOUND OF THE VECTOR A;
SHIFT: <ARITHMETIC EXPRESSION>;
INDEX-SHIFTING PARAMETER;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q];
THE SUBSCRIPTS ABOVE AND THE VALUES OF L(+SHIFT), U(+SHIFT)
AND IL+(U+L-1)*(U-L)//2 SHOULD NOT CONTRADICT EACH OTHER.
LANGUAGE: COMPASS.
SUBSECTION: ICHSEQ.
CALLING SEQUENCE:
HEADING:
"PROCEDURE" ICHSEQ(L, U, IL, SHIFT, A); "VALUE" L,U,IL,SHIFT;
"INTEGER" L,U,IL,SHIFT; "ARRAY" A;
"CODE" 34035;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
IL: <ARITHMETIC EXPRESSION>;
LOWER BOUND OF THE VECTOR A;
SHIFT: <ARITHMETIC EXPRESSION>;
INDEX-SHIFTING PARAMETER;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q];
THE SUBSCRIPTS ABOVE AND THE VALUES OF IL+(J+L-1)*(J-L)//2
( +SHIFT ),J = L(1)U, SHOULD NOT CONTRADICT EACH OTHER.
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.
"CODE" 34030;
"CODE" 34031;
"CODE" 34032;
"CODE" 34033;
"CODE" 34034;
"CODE" 34035;