[Fortran]Multiplying Matrices Using dgemm

I do not know where to put this topic.
However, I would like to multiply two arrays in Fortran using DGEMM (BLAS procedure).
I have written a simple program:
[code]
program matrix
implicit none
double precision mac(m,n),mac2(n,k),mac3(m,k)
integer R,L
integer m,n,k

m=4
n=2
k=3

call FILLMATRIX(m,n,mac)
call FILLMATRIX(n,k,mac2)
call DGEMM("N","N",m,k,n,1.d0,mac,m,mac2,n,0.d0,mac3,m)

WRITE(*,*)'Matrix C:'
DO R=1,m
write(*,*) (mac3(R,L),L=1,k)
end do

END

SUBROUTINE FILLMATRIX (M,N,MATRIX)
INTEGER M,N
DOUBLE PRECISION MATRIX(M,N)

do I=1,M
do J=1,N
MATRIX(I,J) = I+2*J
end do
end do

WRITE(*,*) 'MAtrix: '
do I=1,M
write(*,*) (MATRIX(I,J),J=1,N)
end do

END
[/code]

I get this result:
[code]
Matrix C:
29.00000000000000 0.0000000000000000 0.0000000000000000
36.00000000000000 0.0000000000000000 0.0000000000000000
27.00000000000000 7.2315834086755357E-308 0.0000000000000000
34.00000000000000 1.0037966311151816E-317 0.0000000000000000
Segmentation fault
[/code]
Do any of you have experience with Fortran and Blas and can point where is mistake?


Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories