CHAPTER 1 VECTOR / MATRIX ROUTINES VECTOR / MATRIX ROUTINES PAGE 1-2 CROSS 1.1 SUBROUTINE CROSS ---------- ----- CALL CROSS (C,A,B) CALL CROSSD (C,A,B) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: CROSS PRODUCT OF TWO 3-VECTORS C = A X B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT 3-VECTOR A,B = INPUT 3-VECTORS COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS. SINGLE PRECISION - CROSS FOR 3-VECTORS DOUBLE PRECISION - CROSSD FOR 3-VECTORS C CAN NOT OVERLAP A OR B. PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) VECTOR / MATRIX ROUTINES PAGE 1-3 CROSS EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-4 DOT 1.2 SUBROUTINE DOT ---------- --- CALL DOT (C,A,B,N) CALL DOTD (C,A,B,N) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: DOT PRODUCT OF 2 VECTORS C = SUM OF [A(I)*B(I)] FOR 1<=I<=N LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT A,B = INPUT N-VECTORS N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - DOT FOR N-VECTORS DOUBLE PRECISION - DOTD FOR N-VECTORS NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: VECTOR / MATRIX ROUTINES PAGE 1-5 DOT (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-6 IDENT 1.3 SUBROUTINE IDENT ---------- ----- CALL IDENT (C,M,NRC) CALL IDENTD (C,M,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: C IS SET TO THE IDENTITY MATRIX LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X M SUBMATRIX) M = NUMBER OF DIAGONAL ELEMENTS TO SET = 1.0 NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: ALL INTEGER ARGUMENTS EXCEPT REAL C. SINGLE PRECISION - IDENT DOUBLE PRECISION - IDENTD PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: VECTOR / MATRIX ROUTINES PAGE 1-7 IDENT NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-8 MABT 1.4 SUBROUTINE MABT ---------- ---- CALL MABT (C,A,B,L,M,N) CALL M3ABT (C,A,B,N) CALL MPABT (C,A,B,L,M,N,NRA,NRB,NRC) CALL MABTD (C,A,B,L,M,N) CALL M3ABTD (C,A,B,N) CALL MPABTD (C,A,B,L,M,N,NRA,NRB,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MATRIX TRANSPOSE MULTIPLY - TRANSPOSE RIGHT HAND MATRIX C(L,N) = A(L,M) B(N,M)[TRANSPOSE] LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER L X N SUBMATRIX) A,B = INPUT MATRICES (C = A B[TRANSPOSE]) L,M,N = SUBMATRIX MULTIPLY SIZE C = A B[T] (LXN) = (LXM) (NXM) NRA = NUMBER OF ROWS IN A NRB = NUMBER OF ROWS IN B NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A,B INTEGER ARGUMENTS: L,M,N,NRA,NRB,NRC THERE ARE 3 CALLING SEQUENCES: VECTOR / MATRIX ROUTINES PAGE 1-9 MABT 1. PARTIAL MATRIX MULTIPLY CALL MPABT(C,A,B,L,M,N,NRA,NRB,NRC) C(L,N) = A(L,M) B(N,M)T WHERE A, B, C ARE MATRICES THE L X M UPPER SUBMATRIX OF A IS MULTIPLIED BY THE UPPER N X M SUBMATRIX OF B (TRANSPOSE) AND STORED IN THE UPPER L X N SUBMATRIX OF C 2. FULL MATRIX MULTIPLY CALL MABT(C,A,B,L,M,N) C(L,N) = A(L,M) B(N,M)T 3. 3X3 MATRIX MULTIPLY CALL M3ABT(C,A,B,N) C(3,N) = A(3,3) B(N,3)T NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-10 MADD 1.5 SUBROUTINE MADD ---------- ---- CALL MADD (C,A,B,M,N) CALL M3ADD (C,A,B) CALL MPADD (C,A,B,M,N,NRA,NRB,NRC) CALL MADDD (C,A,B,M,N) CALL M3ADDD (C,A,B) CALL MPADDD (C,A,B,M,N,NRA,NRB,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MATRIX ADDITION C = A + B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) A,B = INPUT MATRICES M,N = UPPER M X N SUBMATRICES ARE SUMMED NRA = NUMBER OF ROWS IN A NRB = NUMBER OF ROWS IN B NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A,B INTEGER ARGUMENTS: M,N,NRA,NRB,NRC SINGLE PRECISION - MADD FOR MXN MATRICES M3ADD FOR 3X3 MATRICES VECTOR / MATRIX ROUTINES PAGE 1-11 MADD MPADD FOR UPPER MXN SUB MATRICES DOUBLE PRECISION - MADDD FOR MXN MATRICES M3ADDD FOR 3X3 MATRICES MPADDD FOR UPPER MXN SUB MATRICES PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-12 MATB 1.6 SUBROUTINE MATB ---------- ---- CALL MATB (C,A,B,L,M,N) CALL M3ATB (C,A,B,N) CALL MPATB (C,A,B,L,M,N,NRA,NRB,NRC) CALL MATBD (C,A,B,L,M,N) CALL M3ATBD (C,A,B,N) CALL MPATBD (C,A,B,L,M,N,NRA,NRB,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MATRIX TRANSPOSE MULTIPLY - TRANSPOSE LEFT HAND MATRIX C(L,N) = A(M,L)[TRANSPOSE] B(M,N) LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER L X N SUBMATRIX) A,B = INPUT MATRICES (C = A[TRANSPOSE] B) L,M,N = SUBMATRIX MULTIPLY SIZE C = A[T] B (LXM) = (MXL) (MXN) NRA = NUMBER OF ROWS IN A NRB = NUMBER OF ROWS IN B NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A,B INTEGER ARGUMENTS: L,M,N,NRA,NRB,NRC THERE ARE 3 CALLING SEQUENCES: VECTOR / MATRIX ROUTINES PAGE 1-13 MATB 1. PARTIAL MATRIX MULTIPLY CALL MPATB(C,A,B,L,M,N,NRA,NRB,NRC) C(L,N) = A(M,L)[TRANSPOSE] B(M,N) WHERE A, B, C ARE MATRICES THE M X L UPPER SUBMATRIX OF A (TRANSPOSE) IS MULTIPLIED BY THE UPPER M X N SUBMATRIX OF B AND STORED IN THE UPPER L X N SUBMATRIX OF C 2. FULL MATRIX MULTIPLY CALL MATB(C,A,B,L,M,N) C(L,N) = A(M,L)[TRANSPOSE] B(M,N) 3. 3X3 MATRIX MULTIPLY CALL M3ATB(C,A,B,N) C(3,N) = A(3,3)[TRANSPOSE] B(3,N) NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-14 MCLR 1.7 SUBROUTINE MCLR ---------- ---- CALL MCLR (C,M,N) CALL M3CLR (C) CALL MPCLR (C,M,N,NRC) CALL MCLRD (C,M,N) CALL M3CLRD (C) CALL MPCLRD (C,M,N,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: CLEARS A MATRIX C = 0 LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) M,N = UPPER M X N SUBMATRX IS USED NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: ALL INTEGER ARGUMENTS EXCEPT C. SINGLE PRECISION - MCLR FOR MXN MATRICES M3CLR FOR 3X3 MATRICES MPCLR FOR UPPER MXN SUBMATRICES DOUBLE PRECISION - MCLRD FOR MXN MATRICES M3CLRD FOR 3X3 MATRICES VECTOR / MATRIX ROUTINES PAGE 1-15 MCLR MPCLRD FOR UPPER MXN SUBMATRICES SET N=1 FOR VECTOR CLEAR. PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-16 MCOM 1.8 SUBROUTINE MCOM ---------- ---- CALL MCOM (C,P,A,Q,B,M,N) CALL M3COM (C,P,A,Q,B) CALL MPCOM (C,P,A,Q,B,M,N,NRA,NRB,NRC) CALL MCOMD (C,P,A,Q,B,M,N) CALL M3COMD (C,P,A,Q,B) CALL MPCOMD (C,P,A,Q,B,M,N,NRA,NRB,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: LINEAR COMBINATION OF TWO MATRICES C = P*A + Q*B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) P,Q = SCALARS A,B = INPUT MATRICES M,N = UPPER M X N SUBMATRICES ARE USED NRA = NUMBER OF ROWS IN A NRB = NUMBER OF ROWS IN B NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,P,A,Q,B INTEGER ARGUMENTS: M,N,NRA,NRB,NRC SINGLE PRECISION - MCOM FOR MXN MATRICES M3COM FOR 3X3 MATRICES VECTOR / MATRIX ROUTINES PAGE 1-17 MCOM MPCOM FOR UPPER MXN SUBMATRICES DOUBLE PRECISION - MCOMD FOR MXN MATRICES M3COMD FOR 3X3 MATRICES MPCOMD FOR UPPER MXN SUBMATRICES PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-18 MMOV 1.9 SUBROUTINE MMOV ---------- ---- CALL MMOV (C,A,M,N) CALL M3MOV (C,A) CALL MPMOV (C,A,M,N,NRA,NRC) CALL MMOVD (C,A,M,N) CALL M3MOVD (C,A) CALL MPMOVD (C,A,M,N,NRA,NRC) VERSION: VECTOR / MATRIX ROUTINES S.A. MILLER REL 1.0 FUNCTION: MOVE A MATRIX TO ANOTHER MATRIX C = A LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) A = INPUT MATRIX M,N = UPPER M X N SUBMATRICES ARE USED NRA = NUMBER OF ROWS IN A NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A INTEGER ARGUMENTS: M,N,NRA,NRC SINGLE PRECISION - MMOV FOR MXN MATRICES M3MOV FOR 3X3 MATRICES MPMOV FOR UPPER MXN SUBMATRICES VECTOR / MATRIX ROUTINES PAGE 1-19 MMOV DOUBLE PRECISION - MMOVD FOR MXN MATRICES M3MOVD FOR 3X3 MATRICES MPMOVD FOR UPPER MXN SUBMATRICES C AND A MUST NOT OVERLAP. PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-20 MMUL 1.10 SUBROUTINE MMUL ---------- ---- CALL MMUL (C,A,B,L,M,N) CALL M3MUL (C,A,B,N) CALL MPMUL (C,A,B,L,M,N,NRA,NRB,NRC) CALL MMULD (C,A,B,L,M,N) CALL M3MULD (C,A,B,N) CALL MPMULD (C,A,B,L,M,N,NRA,NRB,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MATRIX MULTIPLY C(L,N) = A(L,M) B(M,N) LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER L X N SUBMATRIX) A,B = INPUT MATRICES (C = AB) L,M,N = MATRIX MULTIPLY SIZE C = A B (LXN) = (LXM) (MXN) NRA = NUMBER OF ROWS IN A NRB = NUMBER OF ROWS IN B NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A,B INTEGER ARGUMENTS: L,M,N,NRA,NRB,NRC THERE ARE 3 CALLING SEQUENCES: VECTOR / MATRIX ROUTINES PAGE 1-21 MMUL 1. PARTIAL MATRIX MULTIPLY CALL MPMUL(C,A,B,L,M,N,NRA,NRB,NRC) C(L,N) = A(L,M) B(M,N) WHERE A, B, C ARE MATRICES THE L X M UPPER SUBMATRIX OF A IS MULTIPLIED BY THE UPPER M X N SUBMATRIX OF B AND STORED IN THE UPPER L X N SUBMATRIX OF C 2. FULL MATRIX MULTIPLY CALL MMUL(C,A,B,L,M,N) C(L,N) = A(L,M) B(M,N) 3. 3X3 MATRIX MULTIPLY CALL M3MUL(C,A,B,N) C(3,N) = A(3,3) B(3,N) NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-22 MSCL 1.11 SUBROUTINE MSCL ---------- ---- CALL MSCL (C,P,A,M,N) CALL M3SCL (C,P,A) CALL MPSCL (C,P,A,M,N,NRA,NRC) CALL MSCLD (C,P,A,M,N) CALL M3SCLD (C,P,A) CALL MPSCLD (C,P,A,M,N,NRA,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: SCALAR MULTIPLICATION OF A MATRIX C = P A LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) P = SCALAR A = INPUT MATRIX M,N = UPPER M X N SUBMATRICES ARE USED NRA = NUMBER OF ROWS IN A NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,P,A INTEGER ARGUMENTS: M,N,NRA,NRC SINGLE PRECISION - MSCL FOR MXN MATRICES M3SCL FOR 3X3 MATRICES MPSCL FOR UPPER MXN SUBMATRICES VECTOR / MATRIX ROUTINES PAGE 1-23 MSCL DOUBLE PRECISION - MSCLD FOR MXN MATRICES M3SCLD FOR 3X3 MATRICES MPSCLD FOR UPPER MXN SUBMATRICES PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-24 MSUB 1.12 SUBROUTINE MSUB ---------- ---- CALL MSUB (C,A,B,M,N) CALL M3SUB (C,A,B) CALL MPSUB (C,A,B,M,N,NRA,NRB,NRC) CALL MSUBD (C,A,B,M,N) CALL M3SUBD (C,A,B) CALL MPSUBD (C,A,B,M,N,NRA,NRB,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MATRIX SUBTRACTION C = A - B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) A,B = INPUT MATRICES M,N = UPPER M X N SUBMATRICES ARE SUBTRACTED (A - B) NRA = NUMBER OF ROWS IN A NRB = NUMBER OF ROWS IN B NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A,B INTEGER ARGUMENTS: M,N,NRA,NRB,NRC SINGLE PRECISION - MSUB FOR MXN MATRICES M3SUB FOR 3X3 MATRICES MPSUB FOR UPPER MXN SUBMATRICES VECTOR / MATRIX ROUTINES PAGE 1-25 MSUB DOUBLE PRECISION - MSUBD FOR MXN MATRICES M3SUBD FOR 3X3 MATRICES MPSUBD FOR UPPER MXN SUBMATRICES PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-26 MTRN 1.13 SUBROUTINE MTRN ---------- ---- VECTOR / MATRIX ROUTINES PAGE 1-26 MTRN 1.13 SUBROUTINE MTRN ---------- ---- CALL MTRN (C,A,M,N) CALL M3TRN (C,A) CALL MPTRN (C,A,M,N,NRA,NRC) CALL MTRN (C,A,M,N) CALL M3TRND (C,A) CALL MPTRND (C,A,M,N,NRA,NRC) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MATRIX TRANSPOSE C = A(TRANSPOSE) LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT MATRIX (RESULT IS STORED IN UPPER N X M SUBMATRIX) A = INPUT MATRIX M,N = UPPER M X N SUBMATRX OF A IS USED NRA = NUMBER OF ROWS IN A NRC = NUMBER OF ROWS IN C COMMONS: (NONE) GENERAL DESCRIPTION: REAL ARGUMENTS: C,A INTEGER ARGUMENTS: M,N,NRA,NRC SINGLE PRECISION - MTRN FOR MXN MATRICES M3TRN FOR 3X3 MATRICES MPTRN FOR UPPER MXN SUBMATRICES VECTOR / MATRIX ROUTINES PAGE 1-27 MTRN DOUBLE PRECISION - MTRND FOR MXN MATRICES M3TRND FOR 3X3 MATRICES MPTRND FOR UPPER MXN SUBMATRICES PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-28 PROD 1.14 SUBROUTINE PROD ---------- ---- CALL PROD (C,A,B,N) CALL PRODD (C,A,B,N) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: COMPONENT PRODUCT OF TWO VECTORS C(I)=A(I)*B(I) FOR I<=I<=N LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR A,B = INPUT VECTOR N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - PROD FOR N-VECTORS DOUBLE PRECISION - PRODD FOR N-VECTORS PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: VECTOR / MATRIX ROUTINES PAGE 1-29 PROD NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-30 VADD 1.15 SUBROUTINE VADD ---------- ---- CALL VADD (C,A,B,N) CALL V3ADD (C,A,B) CALL VADDD (C,A,B,N) CALL V3ADDD (C,A,B) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: VECTOR ADDITION C = A + B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR A,B = INPUT VECTORS N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - VADD FOR N-VECTORS V3ADD FOR 3-VECTORS DOUBLE PRECISION - VADDD FOR N-VECTORS V3ADDD FOR 3-VECTORS PERIPHERAL INPUT/OUTPUT: (NONE) VECTOR / MATRIX ROUTINES PAGE 1-31 VADD LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-32 VCLR 1.16 SUBROUTINE VCLR ---------- ---- CALL VCLR (C,N) CALL V3CLR (C) CALL VCLRD (C,N) CALL V3CLRD (C) VERSION: MATRIX / VECTOR ROUTINES SAM MILLER REL 1.0 FUNCTION: CLEARS A VECTOR C = 0 LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR N = V ECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: C IS REAL AND N IS INTEGER. SINGLE PRECISION - VCLR FOR N-VECTORS V3CLR FOR 3-VECTORS DOUBLE PRECISION - VCLRD FOR N-VECTORS V3CLRD FOR 3-VECTORS PERIPHERAL INPUT/OUTPUT: VECTOR / MATRIX ROUTINES PAGE 1-33 VCLR (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-34 VCOM 1.17 SUBROUTINE VCOM ---------- ---- CALL VCOM (C,P,A,Q,B,N) CALL V3COM (C,P,A,Q,B) CALL VCOMD (C,P,A,Q,B,N) CALL V3COMD (C,P,A,Q,B) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: LINEAR COMBINATION OF TWO VECTORS C = P*A + Q*B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR P,Q = SCALARS A,B = INPUT VECTOR N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - VCOM FOR N-VECTORS V3COM FOR 3-VECTORS DOUBLE PRECISION - VCOMD FOR N-VECTORS V3COMD FOR 3-VECTORS PERIPHERAL INPUT/OUTPUT: VECTOR / MATRIX ROUTINES PAGE 1-35 VCOM (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-36 VMAG 1.18 FUNCTION VMAG -------- ---- VMAG (A,N) V3MAG ( A) VMAGD (A,N) V3MAGD (A) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MAGNITUDE OF VECTOR [ A(1)*A(1) + A(2)*A(2) + ... + A(N)*A(N) ] 1/2 LANGUAGE: MACRO-11 ARGUMENTS: A = INPUT VECTOR N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: A IS REAL AND N IS INTEGER. SINGLE PRECISION - VMAG FOR N-VECTORS V3MAG FOR 3-VECTORS DOUBLE PRECISION - VMAGD FOR N-VECTORS V3MAGD FOR 3-VECTORS NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION PERIPHERAL INPUT/OUTPUT: VECTOR / MATRIX ROUTINES PAGE 1-37 VMAG (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: $$DSQR - DOUBLE PRECISON SQUARE ROOT NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-38 VMOV 1.19 SUBROUTINE VMOV ---------- ---- CALL VMOV (C,A,N) CALL VMOVD (C,A,N) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: MOVE A VECTOR TO ANOTHER VECTOR C = A LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR N = VECTOR DIMENSION A = INPUT VECTOR COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - VMOV DOUBLE PRECISION - VMOVD A AND C MUST NOT OVERLAP PERIPHERAL INPUT/OUTPUT: (NONE) LOGICAL UNIT USAGE: (NONE) VECTOR / MATRIX ROUTINES PAGE 1-39 VMOV EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-40 VSCL 1.20 SUBROUTINE VSCL ---------- ---- CALL VSCL (C,P,A,N) CALL V3SCL (C,P,A) CALL VSCLD (C,P,A,N) CALL V3SCLD (C,P,A) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: SCALAR TIMES A VECTOR C = P*A LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR P = SCALAR A = INPUT VECTOR N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - VSCL FOR N-VECTORS V3SCL FOR 3-VECTORS DOUBLE PRECISION - VSCLD FOR N-VECTORS V3SCLD FOR 3-VECTORS PERIPHERAL INPUT/OUTPUT: VECTOR / MATRIX ROUTINES PAGE 1-41 VSCL (NONE) LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB VECTOR / MATRIX ROUTINES PAGE 1-42 VSUB 1.21 SUBROUTINE VSUB ---------- ---- CALL VSUB (C,A,B,N) CALL V3SUB (C,A,B) CALL VSUBD (C,A,B,N) CALL V3SUBD (C,A,B) VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 FUNCTION: VECTOR SUBTRACTION C = A - B LANGUAGE: MACRO-11 ARGUMENTS: C = OUTPUT VECTOR A,B = INPUT VECTORS N = VECTOR DIMENSION COMMONS: (NONE) GENERAL DESCRIPTION: ALL REAL ARGUMENTS EXCEPT INTEGER N. SINGLE PRECISION - VSUB FOR N-VECTORS V3SUB FOR 3-VECTORS DOUBLE PRECISION - VSUBD FOR N-VECTORS V3SUBD FOR 3-VECTORS PERIPHERAL INPUT/OUTPUT: (NONE) VECTOR / MATRIX ROUTINES PAGE 1-43 VSUB LOGICAL UNIT USAGE: (NONE) EXTERNAL ROUTINES CALLED: NAM$ $BOMB CHAPTER 2 INDEX INDEX PAGE 2-2 CROSS . . . . . . . . . . . . 1-2 DOT . . . . . . . . . . . . . 1-4 IDENT . . . . . . . . . . . . 1-6 MABT . . . . . . . . . . . . . 1-8 MADD . . . . . . . . . . . . . 1-10 MATB . . . . . . . . . . . . . 1-12 MCLR . . . . . . . . . . . . . 1-14 MCOM . . . . . . . . . . . . . 1-16 MMOV . . . . . . . . . . . . . 1-18 MMUL . . . . . . . . . . . . . 1-20 MSCL . . . . . . . . . . . . . 1-22 MSUB . . . . . . . . . . . . . 1-24 MTRN . . . . . . . . . . . . . 1-26 PROD . . . . . . . . . . . . . 1-28 VADD . . . . . . . . . . . . . 1-30 VCLR . . . . . . . . . . . . . 1-32 VCOM . . . . . . . . . . . . . 1-34 VMAG . . . . . . . . . . . . . 1-36 VMOV . . . . . . . . . . . . . 1-38 VSCL . . . . . . . . . . . . . 1-40 VSUB . . . . . . . . . . . . . 1-42