! =====> Program - P141.F90 ! ! ! ! ! REAL M1(3,4),M2(4,2),M3(3,2) ! 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,4,2) PRINT *,'SOLUTION:' CALL PRNMAT(M3,3,2) STOP END SUBROUTINE MATSIN(M1,M2,I1,J1,I2,J2) REAL M1(I1,J1), M2(I2,J2) ! ! Tell program where data for READ is coming from OPEN(UNIT=5, FILE='P73.DAT') ! UNIT=5 is the default input ! ! READ IN M1 ! ONE PER CARD ! L1: DO I=1,I1 READ 27,(M1(I,J),J=1,J1) END DO L1 27 FORMAT(8(F5.2)) ! ! READ IN M2 ! ONE ROW/CARD ! L1: DO I=1,I2 READ 27,(M2(I,J),J=1,J2) END DO L1 RETURN END ! ! ! SUBROUTINE MULT(M1,M2,M3,I1,J1,I2,J2) REAL M1(I1,J1),M2(I2,J2),M3(I1,J2) ! ! 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 PRNMAT(M3,IMAX,JMAX) ! REAL M3(IMAX,JMAX) ! ! L3: DO I=1,IMAX PRINT 202, (M3(I,J),J=1,JMAX) END DO L3 202 FORMAT(8(2X,F8.3)) PRINT *,' ' ! RETURN END DATA: 45.3 23.O 63.7 2.1 54.6 3.4 64.6 3.3 75.7 25.3 45.8 74.3 45.7 9.0 2.3 67.2 4.9 23.4 54.2 2.9 OUTPUT: Program entered This is Program P73 - Matrix multiplication PROGRAM IS READING DATA INTO ARRAYS 45.300 23.000 63.700 2.100 54.600 3.400 64.600 3.300 75.700 25.300 45.800 74.300 45.700 9.000 2.300 67.200 4.900 23.400 54.200 2.900 NOW MULTIPLYING MATRICES SOLUTION: 2549.060 3449.970 2998.440 2241.090 7769.160 3668.650 Fortran-90 STOP
Page builder: Charles Boivin
Last modified: 11/07/95