home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
PCSSP2.ZIP
/
MATOPS.ZIP
/
TPRD.FOR
< prev
Wrap
Text File
|
1985-11-29
|
3KB
|
81 lines
C
C ..................................................................
C
C SUBROUTINE TPRD
C
C PURPOSE
C TRANSPOSE A MATRIX AND POSTMULTIPLY BY ANOTHER TO FORM
C A RESULTANT MATRIX
C
C USAGE
C CALL TPRD(A,B,R,N,M,MSA,MSB,L)
C
C DESCRIPTION OF PARAMETERS
C A - NAME OF FIRST INPUT MATRIX
C B - NAME OF SECOND INPUT MATRIX
C R - NAME OF OUTPUT MATRIX
C N - NUMBER OF ROWS IN A AND B
C M - NUMBER OF COLUMNS IN A AND ROWS IN R
C MSA - ONE DIGIT NUMBER FOR STORAGE MODE OF MATRIX A
C 0 - GENERAL
C 1 - SYMMETRIC
C 2 - DIAGONAL
C MSB - SAME AS MSA EXCEPT FOR MATRIX B
C L - NUMBER OF COLUMNS IN B AND R
C
C REMARKS
C MATRIX R CANNOT BE IN THE SAME LOCATION AS MATRICES A OR B
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C LOC
C
C METHOD
C MATRIX TRANSPOSE OF A IS NOT ACTUALLY CALCULATED. INSTEAD,
C ELEMENTS IN MATRIX A ARE TAKEN COLUMNWISE RATHER THAN
C ROWWISE FOR MULTIPLICATION BY MATRIX B.
C THE FOLLOWING TABLE SHOWS THE STORAGE MODE OF THE OUTPUT
C MATRIX FOR ALL COMBINATIONS OF INPUT MATRICES
C A B R
C GENERAL GENERAL GENERAL
C GENERAL SYMMETRIC GENERAL
C GENERAL DIAGONAL GENERAL
C SYMMETRIC GENERAL GENERAL
C SYMMETRIC SYMMETRIC GENERAL
C SYMMETRIC DIAGONAL GENERAL
C DIAGONAL GENERAL GENERAL
C DIAGONAL SYMMETRIC GENERAL
C DIAGONAL DIAGONAL DIAGONAL
C
C ..................................................................
C
SUBROUTINE TPRD(A,B,R,N,M,MSA,MSB,L)
DIMENSION A(1),B(1),R(1)
C
C SPECIAL CASE FOR DIAGONAL BY DIAGONAL
C
MS=MSA*10+MSB
IF(MS-22) 30,10,30
10 DO 20 I=1,N
20 R(I)=A(I)*B(I)
RETURN
C
C MULTIPLY TRANSPOSE OF A BY B
C
30 IR=1
DO 90 K=1,L
DO 90 J=1,M
R(IR)=0.0
DO 80 I=1,N
IF(MS) 40,60,40
40 CALL LOC(I,J,IA,N,M,MSA)
CALL LOC(I,K,IB,N,L,MSB)
IF(IA) 50,80,50
50 IF(IB) 70,80,70
60 IA=N*(J-1)+I
IB=N*(K-1)+I
70 R(IR)=R(IR)+A(IA)*B(IB)
80 CONTINUE
90 IR=IR+1
RETURN
END