Quantcast
Channel: Programmers Heaven Forums RSS Feed
Viewing all articles
Browse latest Browse all 2703

[Fortran]Multiplying Matrices Using dgemm

$
0
0
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:
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


I get this result:
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

Do any of you have experience with Fortran and Blas and can point where is mistake?



Viewing all articles
Browse latest Browse all 2703

Trending Articles