silveira13
04-18-2008, 10:05 PM
Dear friends,
I´d like to know how to perform a matrix multiplication with Fortran 90.
Thanks for answer!
davekw7x
04-18-2008, 11:17 PM
...how to perform a matrix multiplication with Fortran 90
1. Get a book or other reference to Fortran 90.
2. Look up matmul:
PROGRAM xmatmul
IMPLICIT NONE
INTEGER i,j
INTEGER, PARAMETER :: M=2,N=3
REAL :: a(M,N) = RESHAPE((/1.0,4.0,2.0,5.0,3.0,6.0/),(/M,N/))
REAL :: b(N,M) = RESHAPE((/1.0,2.0,3.0,4.0,5.0,6.0/),(/N,M/))
REAL :: c(M,M)
write(*,*) 'Matrix [a]'
do i=1,M
write(*,1000) (a(i,j),j=1,N)
enddo
write(*,*)
write(*,*) 'Matrix [b]'
do i=1,N
write(*,1000) (b(i,j),j=1,M)
enddo
write(*,*)
c = matmul(a, b)
write(*,*) 'Matrix [c] = [a] x [b]'
do i = 1,M
write(*,1000) (c(i,j),j=1,M)
enddo
1000 FORMAT(1x,1P10E14.6)
END PROGRAM xmatmul
Output:
Matrix [a]
1.000000E+00 2.000000E+00 3.000000E+00
4.000000E+00 5.000000E+00 6.000000E+00
Matrix [b]
1.000000E+00 4.000000E+00
2.000000E+00 5.000000E+00
3.000000E+00 6.000000E+00
Matrix [c] = [a] x [b]
1.400000E+01 3.200000E+01
3.200000E+01 7.700000E+01
Regards,
Dave