home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP2.ZIP / MATOPS.ZIP / TPRD.FOR < prev   
Text File  |  1985-11-29  |  3KB  |  81 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE TPRD
  5. C
  6. C        PURPOSE
  7. C           TRANSPOSE A MATRIX AND POSTMULTIPLY BY ANOTHER TO FORM
  8. C           A RESULTANT MATRIX
  9. C
  10. C        USAGE
  11. C           CALL TPRD(A,B,R,N,M,MSA,MSB,L)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           A - NAME OF FIRST INPUT MATRIX
  15. C           B - NAME OF SECOND INPUT MATRIX
  16. C           R - NAME OF OUTPUT MATRIX
  17. C           N - NUMBER OF ROWS IN A AND B
  18. C           M - NUMBER OF COLUMNS IN A AND ROWS IN R
  19. C           MSA - ONE DIGIT NUMBER FOR STORAGE MODE OF MATRIX A
  20. C                  0 - GENERAL
  21. C                  1 - SYMMETRIC
  22. C                  2 - DIAGONAL
  23. C           MSB - SAME AS MSA EXCEPT FOR MATRIX B
  24. C           L - NUMBER OF COLUMNS IN B AND R
  25. C
  26. C        REMARKS
  27. C           MATRIX R CANNOT BE IN THE SAME LOCATION AS MATRICES A OR B
  28. C
  29. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  30. C           LOC
  31. C
  32. C        METHOD
  33. C           MATRIX TRANSPOSE OF A IS NOT ACTUALLY CALCULATED. INSTEAD,
  34. C           ELEMENTS IN MATRIX A ARE TAKEN COLUMNWISE RATHER THAN
  35. C           ROWWISE FOR MULTIPLICATION BY MATRIX B.
  36. C           THE FOLLOWING TABLE SHOWS THE STORAGE MODE OF THE OUTPUT
  37. C           MATRIX FOR ALL COMBINATIONS OF INPUT MATRICES
  38. C                         A                B                R
  39. C                      GENERAL          GENERAL          GENERAL
  40. C                      GENERAL          SYMMETRIC        GENERAL
  41. C                      GENERAL          DIAGONAL         GENERAL
  42. C                      SYMMETRIC        GENERAL          GENERAL
  43. C                      SYMMETRIC        SYMMETRIC        GENERAL
  44. C                      SYMMETRIC        DIAGONAL         GENERAL
  45. C                      DIAGONAL         GENERAL          GENERAL
  46. C                      DIAGONAL         SYMMETRIC        GENERAL
  47. C                      DIAGONAL         DIAGONAL         DIAGONAL
  48. C
  49. C     ..................................................................
  50. C
  51.       SUBROUTINE TPRD(A,B,R,N,M,MSA,MSB,L)
  52.       DIMENSION A(1),B(1),R(1)
  53. C
  54. C        SPECIAL CASE FOR DIAGONAL BY DIAGONAL
  55. C
  56.       MS=MSA*10+MSB
  57.       IF(MS-22) 30,10,30
  58.    10 DO 20 I=1,N
  59.    20 R(I)=A(I)*B(I)
  60.       RETURN
  61. C
  62. C        MULTIPLY TRANSPOSE OF A BY B
  63. C
  64.    30 IR=1
  65.       DO 90 K=1,L
  66.       DO 90 J=1,M
  67.       R(IR)=0.0
  68.       DO 80 I=1,N
  69.       IF(MS) 40,60,40
  70.    40 CALL LOC(I,J,IA,N,M,MSA)
  71.       CALL LOC(I,K,IB,N,L,MSB)
  72.       IF(IA) 50,80,50
  73.    50 IF(IB) 70,80,70
  74.    60 IA=N*(J-1)+I
  75.       IB=N*(K-1)+I
  76.    70 R(IR)=R(IR)+A(IA)*B(IB)
  77.    80 CONTINUE
  78.    90 IR=IR+1
  79.       RETURN
  80.       END
  81.