NUMAL Section 1.1.4.1
BEGIN SECTION : 1.1.4.1 (December, 1975)
AUTHORS: T.J.DEKKER, J.C.P.BUS, J.WOLLESWINKEL.
CONTRIBUTORS: P.A.BEENTJES, J.C.P.BUS.
INSTITUTE: MATHEMATICAL CENTRE.
RECEIVED: 741215.
BRIEF DESCRIPTION:
THIS SECTION CONTAINS NINE PROCEDURES.
VECVEC:= SCALAR PRODUCT OF THE VECTOR GIVEN IN ARRAY A[L:U] AND
ARRAY B[SHIFT + L : SHIFT + U].
MATVEC:= SCALAR PRODUCT OF THE ROW VECTOR GIVEN IN ARRAY A[I:I,L:U]
AND THE VECTOR GIVEN IN ARRAY B[L:U].
TAMVEC:= SCALAR PRODUCT OF THE COLUMN VECTOR GIVEN IN ARRAY
A[L:U, I:I] AND THE VECTOR GIVEN IN ARRAY B[L:U].
MATMAT:= SCALAR PRODUCT OF THE ROW VECTOR GIVEN IN ARRAY A[I:I,L:U]
AND THE COLUMN VECTOR IN ARRAY B[L:U, J:J].
TAMMAT:= SCALAR PRODUCT OF THE COLUMN VECTORS GIVEN IN ARRAY
A[L:U, I:I] AND ARRAY B[L:U, J:J].
MATTAM := SCALAR PRODUCT OF THE ROW VECTORS GIVEN IN ARRAY
A[I:I,L:U] AND ARRAY B[J:J, L:U].
SEQVEC := SCALAR PRODUCT OF THE VECTORS GIVEN IN ARRAY
A[IL : IL + (U+L-1)*(U-L)//2] AND ARRAY B[SHIFT + L : SHIFT + U],
WHERE THE ELEMENTS OF THE FIRST VECTOR ARE A[IL+(J+L-1)*(J-L)//2]
FOR J = L, ..., U.
SCAPRD1:= SCALAR PRODUCT OF THE VECTORS GIVEN IN ARRAY
A[MIN(LA, LA + (N - 1) * SA) : MAX(LA,LA + (N - 1) * SA)] AND ARRAY
B[MIN(LB, LB + (N - 1) * SB) : MAX(LB,LB + (N - 1) * SB)] WHERE THE
ELEMENTS OF THE VECTORS ARE A[LA+(J-1)*SA] AND B[LB+(J-1)*SB]
FOR J = 1, ..., N.
SYMMATVEC := THE SCALARPRODUCT OF ( A PART OF ) A VECTOR AND
( A PART OF ) A ROW OF A SYMMETRIC MATRIX , WHOSE UPPERTRIANGLE IS
GIVEN COLUMNWISE IN AN ONE-DIMENSIONAL ARRAY.
KEYWORDS:
ELEMENTARY PROCEDURE,
VECTOR OPERATIONS,
SCALAR PRODUCTS.
SUBSECTION: VECVEC.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" VECVEC(L, U, SHIFT, A, B); "VALUE" L,U,SHIFT;
"INTEGER" L,U,SHIFT; "ARRAY" A,B;
"CODE" 34010;
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].
LANGUAGE: COMPASS.
SUBSECTION: MATVEC.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" MATVEC(L, U, I, A, B); "VALUE" L,U,I;
"INTEGER" L,U,I; "ARRAY" A,B;
"CODE" 34011;
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].
LANGUAGE: COMPASS.
SUBSECTION: TAMVEC.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" TAMVEC(L, U, I, A, B); "VALUE" L,U,I;
"INTEGER" L,U,I; "ARRAY" A,B;
"CODE" 34012;
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].
LANGUAGE: COMPASS.
SUBSECTION: MATMAT.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" MATMAT(L, U, I, J, A, B); "VALUE" L,U,I,J;
"INTEGER" L,U,I,J; "ARRAY" A,B;
"CODE" 34013;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
I,J: <ARITHMETIC EXPRESSION>;
ROW-INDEX OF THE ROW VECTOR A AND COLUMN-INDEX OF THE
COLUMN VECTOR B;
A,B: <ARRAY IDENTIFIER>;
"ARRAY" A[I : I, L : U], B[L : U, J : J].
LANGUAGE: COMPASS.
SUBSECTION: TAMMAT.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" TAMMAT(L, U, I, J, A, B); "VALUE" L,U,I,J;
"INTEGER" L,U,I,J; "ARRAY" A,B;
"CODE" 34014;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
I,J: <ARITHMETIC EXPRESSION>;
COLUMN-INDICES OF THE COLUMN VECTORS A AND B, RESPECTIVELY;
A,B: <ARRAY IDENTIFIER>;
"ARRAY" A[L : U, I : I], B[L : U, J : J].
LANGUAGE: COMPASS.
SUBSECTION: MATTAM.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" MATTAM(L, U, I, J, A, B); "VALUE" L,U,I,J;
"INTEGER" L,U,I,J; "ARRAY" A,B;
"CODE" 34015;
FORMAL PARAMETERS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE RUNNING SUBSCRIPT;
I,J: <ARITHMETIC EXPRESSION>;
ROW-INDICES OF THE ROW VECTORS A AND B, RESPECTIVELY;
A,B: <ARRAY IDENTIFIER>;
"ARRAY" A[I : I, L : U], B[J : J, L : U].
LANGUAGE: COMPASS.
SUBSECTION: SEQVEC.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" SEQVEC(L, U, IL, SHIFT, A, B);
"VALUE" L, U, IL, SHIFT; "INTEGER" L, U, IL, SHIFT; "ARRAY" A, B;
"CODE" 34016;
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 OF THE VECTOR B;
A,B: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q], B[L + SHIFT, U + SHIFT];
THE VALUES OF P AND Q SHOULD SATISFY P <= IL AND Q >=
IL+(U+L-1)*(U-L)//2).
LANGUAGE: COMPASS.
SUBSECTION: SCAPRD1.
CALLING SEQUENCE:
HEADING:
"REAL" "PROCEDURE" SCAPRD1(LA, SA, LB, SB, N, A, B);
"VALUE" LA,SA,LB,SB,N; "INTEGER" LA,SA,LB,SB,N; "ARRAY" A,B;
"CODE" 34017;
FORMAL PARAMETERS:
N: <ARITHMETIC EXPRESSION>;
UPPER BOUND OF THE RUNNING SUBSCRIPT;
LA,LB: <ARITHMETIC EXPRESSION>;
LOWER BOUNDS OF THE VECTORS A AND B, RESPECTIVELY;
SA,SB: <ARITHMETIC EXPRESSION>;
INDEX-SHIFTING PARAMETERS OF THE VECTORS A AND B,
RESPECTIVELY;
A,B: <ARRAY IDENTIFIER>;
"ARRAY" A[P : Q], B[R : S];
THE SUBSCRIPTS ABOVE AND THE VALUES OF LA( +(J-1)*SA ) AND
LB( +(J-1)*SB ),J = 1(1)N SHOULD NOT CONTRADICT EACH OTHER.
LANGUAGE: COMPASS.
SUBSECTION: SYMMATVEC.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"REAL" "PROCEDURE" SYMMATVEC(L, U, I, A, B); "VALUE" L,U,I;
"INTEGER" L,U,I; "ARRAY" A,B;
"CODE" 34018;
SYMMATVEC:= THE VALUE OF THE SCALAR PRODUCT OF THE VECTORS GIVEN
IN ARRAY A[P:Q] AND ARRAY B[L:U] , WHERE THE ELEMENTS
OF THE FIRST VECTOR ARE: IF L<I THEN A[(I-1)*I//2 + J],
J=L,..., MIN(U, I-1) AND A[(J-1)*J//2 + I], J=I,..., U,
RESPECTIVELY , OTHERWISE A[(J-1)*J//2 + I], J=L,..., U.
THE MEANING OF THE FORMAL PARAMETERS IS:
L,U: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE VECTOR B, RESPECTIVELY; L >=1;
I: <ARITHMETIC EXPRESSION>;
ROW INDEX OF THE MATRIX A; I >= 1;
A: <ARRAY IDENTIFIER>;
A ONE-DIMENSIONAL ARRAY A[P : Q] WITH: IF I > L THEN
P=(I-1)*I//2 + L ELSE P=(L-1)*L//2 + I AND IF I > U THEN
Q=(I-1)*I//2 + U ELSE Q=(U-1)*U//2 + I;
B: <ARRAY IDENTIFIER>;
A ONE-DIMENSIONAL ARRAY B[L:U];
PROCEDURES USED:
VECVEC = CP34010,
SEQVEC = CP34016.
LANGUAGE: ALGOL 60.
METHOD AND PERFORMANCE:
SEE REFERENCE [2].
REFERENCES :
[1] T.J.DEKKER.
ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA,PART 1,
MATHEMATICAL CENTRE TRACT 22,AMSTERDAM (1970)
[2] J.C.P.BUS.
MINIMALISERING VAN FUNCTIES VAN MEERDERE VARIABELEN,
MATHEMATICAL CENTRE, NR 29/72,AMSTERDAM (1972)
SOURCE TEXT(S):
THE FOLLOWING PROCEDURES, EXCEPT FOR SYMMATVEC ARE WRITTEN IN COMPASS,
AN EQUIVALENT ALGOL 60 TEXT OF THESE COMPASS ROUTINES IS GIVEN.
"CODE" 34010;
"CODE" 34011;
"CODE" 34012;
"CODE" 34013;
"CODE" 34014;
"CODE" 34015;
"CODE" 34016;
"CODE" 34017;
"CODE" 34018;