!
PROGRAM P73
!
!
IMPLICIT NONE
REAL :: M1(3,4),M2(4,2),M3(3,2)
!
INTERFACE
SUBROUTINE MATSIN(M1,M2,I1,J1,I2,J2)
IMPLICIT NONE
REAL, INTENT(IN OUT) :: M1(:,:),M2(:,:)
INTEGER, INTENT(IN) :: J1,J2,I1,I2
END SUBROUTINE MATSIN
END INTERFACE
!
INTERFACE
SUBROUTINE MULT(M1,M2,M3,I1,J1,J2)
IMPLICIT NONE
REAL, INTENT(IN OUT) :: M1(:,:),M2(:,:),M3(:,:)
INTEGER, INTENT(IN) :: I1,J1,J2
END SUBROUTINE MULT
END INTERFACE
!
INTERFACE
SUBROUTINE PRNMAT(M3,IMAX,JMAX)
IMPLICIT NONE
REAL, INTENT(IN OUT) :: M3(:,:)
INTEGER, INTENT(IN) :: IMAX,JMAX
END SUBROUTINE PRNMAT
END INTERFACE
!
PRINT *,'This is Program P73 - Matrix multiplication'
PRINT *,'PROGRAM IS READING DATA INTO ARRAYS'
CALL MATSIN(M1,M2,3,4,4,2)
CALL PRNMAT(M1,3,4)
CALL PRNMAT(M2,4,2)
PRINT *,'NOW MULTIPLYING MATRICES'
CALL MULT(M1,M2,M3,3,4,2)
PRINT *,'SOLUTION:'
CALL PRNMAT(M3,3,2)
STOP
END PROGRAM P73
!
SUBROUTINE MATSIN(M1,M2,I1,J1,I2,J2)
!
IMPLICIT NONE
REAL, INTENT(IN OUT) :: M1(:,:),M2(:,:)
INTEGER, INTENT(IN) :: J1,J2,I1,I2
INTEGER :: I,J
!
! READ IN M1
! ONE PER CARD
!
L1: DO I=1,I1
READ *,(M1(I,J),J=1,J1)
END DO L1
!
! READ IN M2
! ONE ROW/CARD
!
LOOP: DO I=1,I2
READ *,(M2(I,J),J=1,J2)
END DO LOOP
RETURN
END SUBROUTINE MATSIN
!
!
!
SUBROUTINE MULT(M1,M2,M3,I1,J1,J2)
!
IMPLICIT NONE
REAL, INTENT(IN OUT) :: M1(:,:),M2(:,:),M3(:,:)
INTEGER, INTENT(IN) :: J1,J2,I1
INTEGER :: I,J,K
!
! Now, we will multiply the two matrices
!
!
M3=0.0
DO K=1,J2
DO I=1,J1
DO J=1,I1
M3(J,K) = M3(J,K) + M1(J,I) * M2(I,K)
END DO
END DO
END DO
RETURN
END SUBROUTINE MULT
!
!
!
SUBROUTINE PRNMAT(M3,IMAX,JMAX)
!
IMPLICIT NONE
REAL, INTENT(IN OUT) :: M3(:,:)
INTEGER, INTENT(IN) :: IMAX,JMAX
INTEGER :: I,J
!
!
L3: DO I=1,IMAX
PRINT *,(M3(I,J),J=1,JMAX)
END DO L3
PRINT *,' '
!
RETURN
END SUBROUTINE PRNMAT
DATA:
45. 23. 63. 2. 54. 3. 64. 3. 75. 25. 45. 74. 45. 9. 2. 67. 4. 23. 54. 2.OUTPUT:
+--------------------------------------------------+
| 32-bit Power for Lahey Computer Systems |
| Phar Lap's 386|DOS-Extender(tm) Version 7.0 |
| Copyright (C) 1986-94 Phar Lap Software, Inc. |
| Available Memory = 14880 Kb |
+--------------------------------------------------+
This is Program P73 - Matrix multiplication
PROGRAM IS READING DATA INTO ARRAYS
45.0000 23.0000 63.0000 2.00000
54.0000 3.00000 64.0000 3.00000
75.0000 25.0000 45.0000 74.0000
45.0000 9.00000
2.00000 67.0000
4.00000 23.0000
54.0000 2.00000
NOW MULTIPLYING MATRICES
SOLUTION:
2431.00 3399.00
2854.00 2165.00
7601.00 3533.00
Last modified: 08/07/97