program TestMatrixMult
real, dimension( 3, 3 ) :: A, B, C
! create identity matrix
A = 0.0; do i = 1, size(A); A(i,i) = 1.0; end do
! initialize matrix randomly
call random_number( B )
! multiply matrices A and B
C = matrixMult( A, B )
! output the three matrices
print *, A, B, C
contains
!
! Alternatively use built-in function 'matmul'
! (another built-in is 'dot_product')
!
function matrixMult( A, B ) result ( C )
implicit none
real, dimension( :, : ), intent( in ) :: A ! m x n
real, dimension( :, : ), intent( in ) :: B ! n x p
real, dimension( size(A, 1), size(B, 2) ) :: C ! m x p
integer i, j
do i = 1, size(C, 1)
do j = 1, size (C, 2)
C(i, j) = sum( A(i, :) * B(:, j) )
end do
end do
end function matrixMult
end program TestMatrixMult