!c****   PROGRAMA ELABORADO POR FERNANDO LAROCA  21/JANEIRO/2002
!c***        Fortran PowerStation 4.0
!c****   Calcula o produto entre duas matrizes A e B
!c****    Arquivos de entrada  Matriz_A.txt  e Matriz_B.txt
!c****    Resultado no arquivo de saída  Matriz_C.txt

  Program  Matrix

  Implicit none

    Integer                    :: i      ! variavel contadora- linha
	Integer                    :: j      ! variavel contadora- coluna

	Integer                    :: k      ! variavel contadora

	Integer                    :: mA,nA  ! número de linhas e colunas da Matriz A
	Integer                    :: mB,nB  ! número de linhas e colunas da Matriz B

	Integer                    :: mC,nC  ! número de linhas e colunas da Matriz C

	
	Real*8                     :: A(6,6) ! Matriz A
	Real*8                     :: B(6,6) ! Matriz B
	Real*8                     :: C(6,6) ! Matriz C

	Real*8                     :: aux    ! variável auxiliar


    open(7,file='Matriz_A.txt', form='formatted', status='old')

    open(8,file='Matriz_B.txt', form='formatted', status='old')

	read(7,*) mA, nA

	read(8,*) mB, nB

	if( nA.ne.mB) then

	  print*, 'Não é possível multiplicar essas matrizes. Verifique o no. de linhas e colunas'

	  STOP

	endif

	do i = 1, mA 

	  read(7,*) ( A(i,j) , j=1,nA )

	enddo

	do i = 1, mB 

	  read(8,*) ( B(i,j) , j=1,nB)

	enddo
	
    close(7)

    close(8)			  

	mC = mA

	nC = nB

	do 15, i = 1, mC

	 aux = 0.0d0  

	  do j = 1, nC

	    do k = 1, nA  ! = mB

	      aux = aux + A(i,k) * B(k,j)

		enddo

		C(i,j) = aux

	  enddo

 15 continue

    open(9, file='Matriz_C.txt', form='formatted')

	write(9,20) mC, nC
 
    do i = 1, mC

	  write(9,30) ( C(i,j),  j=1,nC )

    enddo

20  format( 2I3 )   !format( I3,I3 )

30  format( 6(1pE12.5) )


  End Program






