external_interfaces.f90 Source File


Files dependent on this one

sourcefile~~external_interfaces.f90~~AfferentGraph sourcefile~external_interfaces.f90 external_interfaces.f90 sourcefile~formatmul_opts.f90 formatmul_opts.f90 sourcefile~formatmul_opts.f90->sourcefile~external_interfaces.f90 sourcefile~formatmul.f90 formatmul.f90 sourcefile~formatmul.f90->sourcefile~formatmul_opts.f90 sourcefile~test1.f90 test1.f90 sourcefile~test1.f90->sourcefile~formatmul.f90 sourcefile~test10.f90 test10.f90 sourcefile~test10.f90->sourcefile~formatmul.f90 sourcefile~test11.f90 test11.f90 sourcefile~test11.f90->sourcefile~formatmul.f90 sourcefile~test12.f90 test12.f90 sourcefile~test12.f90->sourcefile~formatmul.f90 sourcefile~test13.f90 test13.f90 sourcefile~test13.f90->sourcefile~formatmul.f90 sourcefile~test2.f90 test2.f90 sourcefile~test2.f90->sourcefile~formatmul.f90 sourcefile~test3.f90 test3.f90 sourcefile~test3.f90->sourcefile~formatmul.f90 sourcefile~test4.f90 test4.f90 sourcefile~test4.f90->sourcefile~formatmul.f90 sourcefile~test5.f90 test5.f90 sourcefile~test5.f90->sourcefile~formatmul.f90 sourcefile~test6.f90 test6.f90 sourcefile~test6.f90->sourcefile~formatmul.f90 sourcefile~test7.f90 test7.f90 sourcefile~test7.f90->sourcefile~formatmul.f90 sourcefile~test8.f90 test8.f90 sourcefile~test8.f90->sourcefile~formatmul.f90 sourcefile~test9.f90 test9.f90 sourcefile~test9.f90->sourcefile~formatmul.f90

Source Code

module external_interfaces_matmul

   use kinds

   implicit none

   interface gemm
#if defined(REAL64)
      pure subroutine dgemm(f_transa, f_transb, f_m, f_n, f_k, f_alpha, f_a, f_lda, f_b, f_ldb, f_beta, f_c, f_ldc)
         import rk
         integer,   intent(in)    :: f_ldc
         integer,   intent(in)    :: f_ldb
         integer,   intent(in)    :: f_lda
         character, intent(in)    :: f_transa
         character, intent(in)    :: f_transb
         integer,   intent(in)    :: f_m
         integer,   intent(in)    :: f_n
         integer,   intent(in)    :: f_k
         real(rk),  intent(in)    :: f_alpha
         real(rk),  intent(in)    :: f_a(f_lda, *)
         real(rk),  intent(in)    :: f_b(f_ldb, *)
         real(rk),  intent(in)    :: f_beta
         real(rk),  intent(inout) :: f_c(f_ldc, *)
      end subroutine dgemm
#elif defined(REAL32)
      pure subroutine sgemm(f_transa, f_transb, f_m, f_n, f_k, f_alpha, f_a, f_lda, f_b, f_ldb, f_beta, f_c, f_ldc)
         import rk
         integer,   intent(in)    :: f_ldc
         integer,   intent(in)    :: f_ldb
         integer,   intent(in)    :: f_lda
         character, intent(in)    :: f_transa
         character, intent(in)    :: f_transb
         integer,   intent(in)    :: f_m
         integer,   intent(in)    :: f_n
         integer,   intent(in)    :: f_k
         real(rk),  intent(in)    :: f_alpha
         real(rk),  intent(in)    :: f_a(f_lda, *)
         real(rk),  intent(in)    :: f_b(f_ldb, *)
         real(rk),  intent(in)    :: f_beta
         real(rk),  intent(inout) :: f_c(f_ldc, *)
      end subroutine sgemm
#else
      pure subroutine dgemm(f_transa, f_transb, f_m, f_n, f_k, f_alpha, f_a, f_lda, f_b, f_ldb, f_beta, f_c, f_ldc)
         import rk
         integer,   intent(in)    :: f_ldc
         integer,   intent(in)    :: f_ldb
         integer,   intent(in)    :: f_lda
         character, intent(in)    :: f_transa
         character, intent(in)    :: f_transb
         integer,   intent(in)    :: f_m
         integer,   intent(in)    :: f_n
         integer,   intent(in)    :: f_k
         real(rk),  intent(in)    :: f_alpha
         real(rk),  intent(in)    :: f_a(f_lda, *)
         real(rk),  intent(in)    :: f_b(f_ldb, *)
         real(rk),  intent(in)    :: f_beta
         real(rk),  intent(inout) :: f_c(f_ldc, *)
      end subroutine dgemm
#endif
   end interface

   interface gemv
#if defined(REAL64)
      pure subroutine dgemv(f_trans, f_m, f_n, f_alpha, f_a, f_lda, f_x, f_incx, f_beta, f_y, f_incy)
         import rk
         integer,   intent(in)    :: f_m
         integer,   intent(in)    :: f_n
         integer,   intent(in)    :: f_lda
         character, intent(in)    :: f_trans
         real(rk),  intent(in)    :: f_alpha
         real(rk),  intent(in)    :: f_a(f_lda, *)
         real(rk),  intent(in)    :: f_x(*)
         integer,   intent(in)    :: f_incx
         real(rk),  intent(in)    :: f_beta
         real(rk),  intent(inout) :: f_y(*)
         integer,   intent(in)    :: f_incy
      end subroutine dgemv
#elif defined(REAL32)
      pure subroutine sgemv(f_trans, f_m, f_n, f_alpha, f_a, f_lda, f_x, f_incx, f_beta, f_y, f_incy)
         import rk
         integer,   intent(in)    :: f_m
         integer,   intent(in)    :: f_n
         integer,   intent(in)    :: f_lda
         character, intent(in)    :: f_trans
         real(rk),  intent(in)    :: f_alpha
         real(rk),  intent(in)    :: f_a(f_lda, *)
         real(rk),  intent(in)    :: f_x(*)
         integer,   intent(in)    :: f_incx
         real(rk),  intent(in)    :: f_beta
         real(rk),  intent(inout) :: f_y(*)
         integer,   intent(in)    :: f_incy
      end subroutine sgemv
#else
      pure subroutine dgemv(f_trans, f_m, f_n, f_alpha, f_a, f_lda, f_x, f_incx, f_beta, f_y, f_incy)
         import rk
         integer,   intent(in)    :: f_m
         integer,   intent(in)    :: f_n
         integer,   intent(in)    :: f_lda
         character, intent(in)    :: f_trans
         real(rk),  intent(in)    :: f_alpha
         real(rk),  intent(in)    :: f_a(f_lda, *)
         real(rk),  intent(in)    :: f_x(*)
         integer,   intent(in)    :: f_incx
         real(rk),  intent(in)    :: f_beta
         real(rk),  intent(inout) :: f_y(*)
         integer,   intent(in)    :: f_incy
      end subroutine dgemv
#endif
   end interface

end module external_interfaces_matmul