program test_matmul12 use kinds use formatmul use forunittest implicit none real(rk), allocatable :: A(:,:), B(:,:) real(rk), allocatable :: C_ref(:,:), C(:,:) integer :: m, n, o, im type(unit_test) :: ut #if defined(USE_COARRAY) im = this_image() #else im = 1 #endif ! C(m,o) = A(m,n).B(o,n) m = 500 n = 400 o = 300 allocate(A(m,n),B(o,n)) call random_number(A) call random_number(B) A = A*100.0_rk B = B*100.0_rk C_ref = matmul(A,transpose(B)) C = matmul(A,B, transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.1') C = matmul(A,B, option='m1', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.2') C = matmul(A,B, option='m2', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.3') C = matmul(A,B, option='m3', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.4') C = matmul(A,B, option='m4', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.5') C = matmul(A,B, option='m5', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.6') C = matmul(A,B, option='m6', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.7') C = matmul(A,B, option='m7', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.8') C = matmul(A,B, option='m8', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.9') C = matmul(A,B, option='m9', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.10') ! C = matmul(A,B, option='m10', transB=.true., coarray=.true.) ! if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.11') ! C = matmul(A,B, option='m11', transB=.true., coarray=.true.) ! if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.12') C = matmul(A,B, option='m12', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.13') C = matmul(A,B, option='m13', transB=.true., coarray=.true.) if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.14') end program test_matmul12