home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / matops / mprd.for < prev    next >
Encoding:
Text File  |  1985-11-29  |  2.7 KB  |  82 lines

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