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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE MSUB
  5. C
  6. C        PURPOSE
  7. C           SUBTRACT TWO MATRICES ELEMENT BY ELEMENT TO FORM RESULTANT
  8. C           MATRIX
  9. C
  10. C        USAGE
  11. C           CALL MSUB(A,B,R,N,M,MSA,MSB)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           A - NAME OF INPUT MATRIX
  15. C           B - NAME OF INPUT MATRIX
  16. C           R - NAME OF OUTPUT MATRIX
  17. C           N - NUMBER OF ROWS IN A,B,R
  18. C           M - NUMBER OF COLUMNS IN A,B,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
  25. C        REMARKS
  26. C           NONE
  27. C
  28. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  29. C           LOC
  30. C
  31. C        METHOD
  32. C           STRUCTURE OF OUTPUT MATRIX IS FIRST DETERMINED. SUBTRACTION
  33. C           OF MATRIX B ELEMENTS FROM CORRESPONDING MATRIX A ELEMENTS
  34. C           IS THEN PERFORMED.
  35. C           THE FOLLOWING TABLE SHOWS THE STORAGE MODE OF THE OUTPUT
  36. C           MATRIX FOR ALL COMBINATIONS OF INPUT MATRICES
  37. C                         A                B                 R
  38. C                      GENERAL          GENERAL          GENERAL
  39. C                      GENERAL          SYMMETRIC        GENERAL
  40. C                      GENERAL          DIAGONAL         GENERAL
  41. C                      SYMMETRIC        GENERAL          GENERAL
  42. C                      SYMMETRIC        SYMMETRIC        SYMMETRIC
  43. C                      SYMMETRIC        DIAGONAL         SYMMETRIC
  44. C                      DIAGONAL         GENERAL          GENERAL
  45. C                      DIAGONAL         SYMMETRIC        SYMMETRIC
  46. C                      DIAGONAL         DIAGONAL         DIAGONAL
  47. C
  48. C     ..................................................................
  49. C
  50.       SUBROUTINE MSUB(A,B,R,N,M,MSA,MSB)
  51.       DIMENSION A(1),B(1),R(1)
  52. C
  53. C        DETERMINE STORAGE MODE OF OUTPUT MATRIX
  54. C
  55.       IF(MSA-MSB) 7,5,7
  56.     5 CALL LOC(N,M,NM,N,M,MSA)
  57.       GO TO 100
  58.     7 MTEST=MSA*MSB
  59.       MSR=0
  60.       IF(MTEST) 20,20,10
  61.    10 MSR=1
  62.    20 IF(MTEST-2) 35,35,30
  63.    30 MSR=2
  64. C
  65. C        LOCATE ELEMENTS AND PERFORM SUBTRACTION
  66. C
  67.    35 DO 90 J=1,M
  68.       DO 90 I=1,N
  69.       CALL LOC(I,J,IJR,N,M,MSR)
  70.       IF(IJR) 40,90,40
  71.    40 CALL LOC(I,J,IJA,N,M,MSA)
  72.       AEL=0.0
  73.       IF(IJA) 50,60,50
  74.    50 AEL=A(IJA)
  75.    60 CALL LOC(I,J,IJB,N,M,MSB)
  76.       BEL=0.0
  77.       IF(IJB) 70,80,70
  78.    70 BEL=B(IJB)
  79.    80 R(IJR)=AEL-BEL
  80.    90 CONTINUE
  81.       RETURN
  82. C
  83. C        SUBTRACT MATRICES FOR OTHER CASES
  84. C
  85.   100 DO 110 I=1,NM
  86.   110 R(I)=A(I)-B(I)
  87.       RETURN
  88.       END
  89.