File: TPRD.FT of Tape: Various/ETH/eth11-2
(Source file text)
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