NUMAL Section 1.1.4.2
BEGIN SECTION : 1.1.4.2 (December, 1979)
AUTHOR : D.WINTER.
INSTITUTE : MATHEMATICAL CENTRE.
RECEIVED : 741215.
BRIEF DESCRIPTION :
THIS SECTION CONTAINS FIVE PROCEDURES :
FULMATVEC CALCULATES THE VECTOR A * B, WHERE A IS A GIVEN MATRIX
AND B IS A VECTOR.
FULTAMVEC CALCULATES THE VECTOR A' * B, WHERE A' IS THE TRANSPOSED
OF THE MATRIX A AND B IS A VECTOR.
FULSYMMATVEC CALCULATES THE VECTOR A * B, WHERE A IS A SYMMETRIC
MATRIX WHOSE UPPERTRIANGLE IS STORED COLUMNWISE IN A
ONE-DIMENSIONAL ARRAY AND B IS A VECTOR.
RESVEC CALCULATES THE RESIDUAL VECTOR A * B + X * C, WHERE A IS A
GIVEN MATRIX, B AND C ARE VECTORS AND X IS A SCALAR.
SYMRESVEC CALCULATES THE RESIDUAL VECTOR A * B + X * C, WHERE A IS
A SYMMETRIC MATRIX WHOSE UPPERTRIANGLE IS STORED IN A
ONE-DIMENSIONAL ARRAY, B AND C ARE VECTORS AND X IS A SCALAR.
KEYWORDS :
ELEMENTARY PROCEDURE,
VECTOR OPERATION.
SUBSECTION: FULMATVEC.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"PROCEDURE" FULMATVEC(LR, UR, LC, UC, A, B, C);
"VALUE" LR, UR, LC, UC; "INTEGER" LR, UR, LC, UC;
"ARRAY" A, B, C;
"CODE" 31500;
THE MEANING OF THE FORMAL PARAMETERS IS:
LR, UR: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE ROW-INDEX;
LC, UC: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE COLUMN-INDEX;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[LR:UR,LC:UC]; THE MATRIX;
B: <ARRAY IDENTIFIER>;
"ARRAY" B[LC:UC]; THE VECTOR;
C: <ARRAY IDENTIFIER>;
"ARRAY" C[LR:UR];
THE RESULT A * B IS DELIVERED IN C.
LANGUAGE: COMPASS 3.
(FOR THE COMPASS-VERSION, THE PARAMETER B CAN BE ASSUMED TO HAVE
BEEN SPECIFIED "VALUE".)
METHOD AND PERFORMANCE: SEE REFERENCE [1].
SUBSECTION: FULTAMVEC.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"PROCEDURE" FULTAMVEC(LR, UR, LC, UC, A, B, C);
"VALUE" LR, UR, LC, UC; "INTEGER" LR, UR, LC, UC;
"ARRAY" A, B, C;
"CODE" 31501;
THE MEANING OF THE FORMAL PARAMETERS IS:
LR, UR: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE ROW-INDEX;
LC, UC: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE COLUMN-INDEX;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[LR:UR,LC:UC]; THE MATRIX;
B: <ARRAY IDENTIFIER>;
"ARRAY" B[LR:UR]; THE VECTOR;
C: <ARRAY IDENTIFIER>;
"ARRAY" C[LC:UC];
THE RESULT A' * B IS DELIVERED IN C; HERE A' DENOTES THE
TRANSPOSED OF THE MATRIX A.
LANGUAGE: COMPASS 3.
(FOR THE COMPASS-VERSION, THE PARAMETER B CAN BE ASSUMED TO HAVE
BEEN SPECIFIED "VALUE".)
METHOD AND PERFORMANCE: ELEMENTARY.
SUBSECTION: FULSYMMATVEC.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"PROCEDURE" FULSYMMATVEC(LR, UR, LC, UC, A, B, C);
"VALUE" LR, UR, LC, UC, B; "INTEGER" LR, UR, LC, UC;
"ARRAY" A, B, C;
"CODE" 31502;
THE MEANING OF THE FORMAL PARAMETERS IS:
LR, UR: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE ROW-INDEX; LR >= 1;
LC, UC: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE COLUMN-INDEX; LC >= 1;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[L:U], WHERE:
L = MIN(LR * (LR - 1) // 2 + LC, LC * (LC - 1) // 2 + LR),
U = MAX(UR * (UR - 1) // 2 + UC, UC * (UC - 1) // 2 + UR)
AND FOR I <= J THE (I,J)-TH ELEMENT, OTHERWISE THE
(J,I)-TH ELEMENT OF THE SYMMETRIC MATRIX SHOULD BE
GIVEN IN A[J * (J - 1) // 2 + I];
B: <ARRAY IDENTIFIER>;
"ARRAY" B[LC:UC]; THE VECTOR;
C: <ARRAY IDENTIFIER>;
"ARRAY" C[LR:UR];
THE RESULT A * B IS DELIVERED IN C.
PROCEDURES USED:
SYMMATVEC = CP34018.
LANGUAGE: ALGOL 60.
METHOD AND PERFORMANCE:
ELEMENTARY.
SUBSECTION: RESVEC.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"PROCEDURE" RESVEC(LR, UR, LC, UC, A, B, C, X);
"VALUE" LR, UR, LC, UC, X; "INTEGER" LR, UR, LC, UC;
"REAL" X; "ARRAY" A, B, C;
"CODE" 31503;
THE MEANING OF THE FORMAL PARAMETERS IS:
LR, UR: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE ROW-INDEX;
LC, UC: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE COLUMN-INDEX;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[LR:UR,LC:UC]; THE MATRIX;
B: <ARRAY IDENTIFIER>;
"ARRAY" B[LC:UC]; THE VECTOR;
X: <ARITHMETIC EXPRESSION>;
THE VALUE OF THE MULTIPLYING SCALAR;
C: <ARRAY IDENTIFIER>;
"ARRAY" C[LR:UR];
THE RESULT A * B + X * C IS OVERWRITTEN ON C.
LANGUAGE: COMPASS 3.
(FOR THE COMPASS-VERSION, THE PARAMETER B CAN BE ASSUMED TO HAVE
BEEN SPECIFIED "VALUE".)
METHOD AND PERFORMANCE:
ELEMENTARY.
SUBSECTION: SYMRESVEC.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"PROCEDURE" SYMRESVEC(LR, UR, LC, UC, A, B, C, X);
"VALUE" LR, UR, LC, UC, B, X; "INTEGER" LR, UR, LC, UC;
"REAL" X; "ARRAY" A, B, C;
"CODE" 31504;
THE MEANING OF THE FORMAL PARAMETERS IS:
LR, UR: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE ROW-INDEX; LR >= 1;
LC, UC: <ARITHMETIC EXPRESSION>;
LOWER AND UPPER BOUND OF THE COLUMN-INDEX; LC >= 1;
A: <ARRAY IDENTIFIER>;
"ARRAY" A[L:U], WHERE:
L = MIN(LR * (LR - 1) // 2 + LC, LC * (LC - 1) // 2 + LR),
U = MAX(UR * (UR - 1) // 2 + UC, UC * (UC - 1) // 2 + UR)
AND THE (I,J)-TH ELEMENT OF THE SYMMETRIC MATRIX SHOULD BE
GIVEN IN A[J * (J - 1) // 2 + I];
B: <ARRAY IDENTIFIER>;
"ARRAY" B[LC:UC]; THE VECTOR;
X: <ARITHMETIC EXPRESSION>;
THE VALUE OF THE MULTIPLYING SCALAR;
C: <ARRAY IDENTIFIER>;
"ARRAY" C[LR:UR];
THE RESULT A * B + X * C IS DELIVERED IN C.
PROCEDURES USED:
SYMMATVEC = CP34018.
LANGUAGE: ALGOL 60.
METHOD AND PERFORMANCE:
ELEMENTARY.
REFERENCES:
[1].T.J.DEKKER.
ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART1,
MATHEMATICAL CENTRE TRACT 22, AMSTERDAM (1970).
[2].J.C.P.BUS.
MINIMALISERING VAN FUNKTIES VAN MEERDERE VARIABELEN,
MATHEMATICAL CENTRE, NR 29/72, AMSTERDAM (1972).
SOURCE TEXT(S):
THE FOLLOWING PROCEDURES, EXCEPT FOR FULSYMMATVEC AND SYMRESVEC ARE
WRITTEN IN COMPASS 3, AN EQUIVALENT ALGOL TEXT OF THESE COMPASS
ROUTINES IS GIVEN.
"CODE" 31500;
"CODE" 31501;
"CODE" 31502;
"CODE" 31503;
"CODE" 31504;