!---- Filename: matmult.f
!---- Demonstrate DO directive, adapting to the ever-loathed O(N**3)
!---- matrix multiplication algorithm
      program matmult
      implicit none
      integer i,j,k
      integer, parameter:: Maxsz=512
      real a(maxsz,maxsz), b(maxsz,maxsz), c(maxsz,maxsz)

      call random_number(A)
      call random_number(B)
      data C/262144 * 0.0/ !Err... I'm incompetent at FORTRAN :P
      !$OMP PARALLEL DEFAULT(PRIVATE) SHARED(A,B)
      !$OMP DO SCHEDULE(STATIC,4)
      do i=1,maxsz
         do j=1,maxsz
            do k=1,maxsz
               c(i,j) = c(i,j) + a(i,k) * b(k,j)
            enddo
         enddo
      enddo
      !$OMP END DO
      !$OMP END PARALLEL
      end

