! Replaces ZGEMM 36 procedures ! Level 3 COMPLEX (ZGEMM) ! . alpha op_a op_b beta c ! 301 any T T any c < alpha a(T) b(T) + beta c ! 302 any T T 0.0 c < alpha a(T) b(T) ! 303* any T H any c < alpha a(T) b(H) + beta c ! 304* any T H 0.0 c < alpha a(T) b(H) ! 305 any T any c < alpha a(T) b + beta c ! 306 any T 0.0 c < alpha a(T) b ! 307* any H T any c < alpha a(H) b(T) + beta c ! 308* any H T 0.0 c < alpha a(H) b(T) ! 309* any H H any c < alpha a(H) b(H) + beta c ! 310* any H H 0.0 c < alpha a(H) b(H) ! 311* any H any c < alpha a(H) b + beta c ! 312* any H 0.0 c < alpha a(H) b ! 313 any T any c < alpha a b(T) + beta c ! 314 any T 0.0 c < alpha a b(T) ! 315* any H any c < alpha a b(H) + beta c ! 316* any H 0.0 c < alpha a b(H) ! 317 any any c < alpha a b + beta c ! 318 any 0.0 c < alpha a b ! 319 1.0 T T any c < a(T) b(T) + beta c ! 320 1.0 T T 0.0 c < a(T) b(T) ! 321* 1.0 T H any c < a(T) b(H) + beta c ! 322* 1.0 T H 0.0 c < a(T) b(H) ! 323 1.0 T any c < a(T) b + beta c ! 324 1.0 T 0.0 c < a(T) b ! 325* 1.0 H T any c < a(H) b(T) + beta c ! 326* 1.0 H T 0.0 c < a(H) b(T) ! 327* 1.0 H H any c < a(H) b(H) + beta c ! 328* 1.0 H H 0.0 c < a(H) b(H) ! 329* 1.0 H any c < a(H) b + beta c ! 330* 1.0 H 0.0 c < a(H) b ! 331 1.0 T any c < a b(T) + beta c ! 332 1.0 T 0.0 c < a b(T) ! 333* 1.0 H any c < a b(H) + beta c ! 334* 1.0 H 0.0 c < a b(H) ! 335 1.0 any c < a b + beta c ! 336 1.0 0.0 c < a b ! * means not needed for the REAL case ! . all procedures with op_a or op_b of type "blas_conj_trans" ! . are not needed but have been added for consistency ! . with the complex case ! . (303, 304, 307, 308, 309, 310, 311, 312, 315, 316, ! . 321, 322, 325, 326, 327, 328, 329, 330, 333, 334) ! . Some of the operations could be replaced by Fortran 90 Intrinsics ! . For example 336 == MATMUL(a,b) ! . 318 == alpha * MATMUL(a,b) MODULE zgemm_01 CONTAINS SUBROUTINE zgemm_301(alpha,a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','T',m,n,k,alpha,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_301 END MODULE zgemm_01 MODULE zgemm_02 CONTAINS SUBROUTINE zgemm_302(alpha,a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','T',m,n,k,alpha,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_302 END MODULE zgemm_02 MODULE zgemm_03 CONTAINS SUBROUTINE zgemm_303(alpha,a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','C',m,n,k,alpha,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_303 END MODULE zgemm_03 MODULE zgemm_04 CONTAINS SUBROUTINE zgemm_304(alpha,a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','C',m,n,k,alpha,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_304 END MODULE zgemm_04 MODULE zgemm_05 CONTAINS SUBROUTINE zgemm_305(alpha,a,op_a,b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','N',m,n,k,alpha,a,k,b,k,beta,c,m) END SUBROUTINE zgemm_305 END MODULE zgemm_05 MODULE zgemm_06 CONTAINS SUBROUTINE zgemm_306(alpha,a,op_a,b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','N',m,n,k,alpha,a,k,b,k,zero,c,m) END SUBROUTINE zgemm_306 END MODULE zgemm_06 MODULE zgemm_07 CONTAINS SUBROUTINE zgemm_307(alpha,a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','T',m,n,k,alpha,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_307 END MODULE zgemm_07 MODULE zgemm_08 CONTAINS SUBROUTINE zgemm_308(alpha,a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','T',m,n,k,alpha,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_308 END MODULE zgemm_08 MODULE zgemm_09 CONTAINS SUBROUTINE zgemm_309(alpha,a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','C',m,n,k,alpha,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_309 END MODULE zgemm_09 MODULE zgemm_10 CONTAINS SUBROUTINE zgemm_310(alpha,a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','C',m,n,k,alpha,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_310 END MODULE zgemm_10 MODULE zgemm_11 CONTAINS SUBROUTINE zgemm_311(alpha,a,op_a,b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','N',m,n,k,alpha,a,k,b,k,beta,c,m) END SUBROUTINE zgemm_311 END MODULE zgemm_11 MODULE zgemm_12 CONTAINS SUBROUTINE zgemm_312(alpha,a,op_a,b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','N',m,n,k,alpha,a,k,b,k,zero,c,m) END SUBROUTINE zgemm_312 END MODULE zgemm_12 MODULE zgemm_13 CONTAINS SUBROUTINE zgemm_313(alpha,a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','T',m,n,k,alpha,a,m,b,n,beta,c,m) END SUBROUTINE zgemm_313 END MODULE zgemm_13 MODULE zgemm_14 CONTAINS SUBROUTINE zgemm_314(alpha,a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','T',m,n,k,alpha,a,m,b,n,zero,c,m) END SUBROUTINE zgemm_314 END MODULE zgemm_14 MODULE zgemm_15 CONTAINS SUBROUTINE zgemm_315(alpha,a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','C',m,n,k,alpha,a,m,b,n,beta,c,m) END SUBROUTINE zgemm_315 END MODULE zgemm_15 MODULE zgemm_16 CONTAINS SUBROUTINE zgemm_316(alpha,a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','C',m,n,k,alpha,a,m,b,n,zero,c,m) END SUBROUTINE zgemm_316 END MODULE zgemm_16 MODULE zgemm_17 CONTAINS SUBROUTINE zgemm_317(alpha,a,b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha, beta ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','N',m,n,k,alpha,a,m,b,k,beta,c,m) END SUBROUTINE zgemm_317 END MODULE zgemm_17 MODULE zgemm_18 CONTAINS SUBROUTINE zgemm_318(alpha,a,b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: alpha ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','N',m,n,k,alpha,a,m,b,k,zero,c,m) END SUBROUTINE zgemm_318 END MODULE zgemm_18 MODULE zgemm_19 CONTAINS SUBROUTINE zgemm_319(a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','T',m,n,k,one,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_319 END MODULE zgemm_19 MODULE zgemm_20 CONTAINS SUBROUTINE zgemm_320(a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','T',m,n,k,one,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_320 END MODULE zgemm_20 MODULE zgemm_21 CONTAINS SUBROUTINE zgemm_321(a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','C',m,n,k,one,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_321 END MODULE zgemm_21 MODULE zgemm_22 CONTAINS SUBROUTINE zgemm_322(a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','C',m,n,k,one,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_322 END MODULE zgemm_22 MODULE zgemm_23 CONTAINS SUBROUTINE zgemm_323(a,op_a,b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','N',m,n,k,one,a,k,b,k,beta,c,m) END SUBROUTINE zgemm_323 END MODULE zgemm_23 MODULE zgemm_24 CONTAINS SUBROUTINE zgemm_324(a,op_a,b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('T','N',m,n,k,one,a,k,b,k,zero,c,m) END SUBROUTINE zgemm_324 END MODULE zgemm_24 MODULE zgemm_25 CONTAINS SUBROUTINE zgemm_325(a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','T',m,n,k,one,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_325 END MODULE zgemm_25 MODULE zgemm_26 CONTAINS SUBROUTINE zgemm_326(a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type, blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','T',m,n,k,one,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_326 END MODULE zgemm_26 MODULE zgemm_27 CONTAINS SUBROUTINE zgemm_327(a,op_a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','C',m,n,k,one,a,k,b,n,beta,c,m) END SUBROUTINE zgemm_327 END MODULE zgemm_27 MODULE zgemm_28 CONTAINS SUBROUTINE zgemm_328(a,op_a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a, op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','C',m,n,k,one,a,k,b,n,zero,c,m) END SUBROUTINE zgemm_328 END MODULE zgemm_28 MODULE zgemm_29 CONTAINS SUBROUTINE zgemm_329(a,op_a,b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','N',m,n,k,one,a,k,b,k,beta,c,m) END SUBROUTINE zgemm_329 END MODULE zgemm_29 MODULE zgemm_30 CONTAINS SUBROUTINE zgemm_330(a,op_a,b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_a ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,1) CALL zgemm('C','N',m,n,k,one,a,k,b,k,zero,c,m) END SUBROUTINE zgemm_330 END MODULE zgemm_30 MODULE zgemm_31 CONTAINS SUBROUTINE zgemm_331(a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','T',m,n,k,one,a,m,b,n,beta,c,m) END SUBROUTINE zgemm_331 END MODULE zgemm_31 MODULE zgemm_32 CONTAINS SUBROUTINE zgemm_332(a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','T',m,n,k,one,a,m,b,n,zero,c,m) END SUBROUTINE zgemm_332 END MODULE zgemm_32 MODULE zgemm_33 CONTAINS SUBROUTINE zgemm_333(a,b,op_b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','C',m,n,k,one,a,m,b,n,beta,c,m) END SUBROUTINE zgemm_333 END MODULE zgemm_33 MODULE zgemm_34 CONTAINS SUBROUTINE zgemm_334(a,b,op_b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp USE blas_keywords, ONLY : blas_conj_trans_type ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. TYPE (blas_conj_trans_type), INTENT (IN) :: op_b ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','C',m,n,k,one,a,m,b,n,zero,c,m) END SUBROUTINE zgemm_334 END MODULE zgemm_34 MODULE zgemm_35 CONTAINS SUBROUTINE zgemm_335(a,b,beta,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp ! .. Parameters .. COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Scalar Arguments .. COMPLEX (wp), INTENT (IN) :: beta ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (INOUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','N',m,n,k,one,a,m,b,k,beta,c,m) END SUBROUTINE zgemm_335 END MODULE zgemm_35 MODULE zgemm_36 CONTAINS SUBROUTINE zgemm_336(a,b,c) ! .. Use Statements .. USE blas_kinds, ONLY : wp => dp ! .. Parameters .. COMPLEX (wp), PARAMETER :: zero = (0.0_wp,0.0_wp) COMPLEX (wp), PARAMETER :: one = (1.0_wp,0.0_wp) ! .. Array Arguments .. COMPLEX (wp), INTENT (IN) :: a(:,:), b(:,:) COMPLEX (wp), INTENT (OUT) :: c(:,:) ! .. Local Scalar .. INTEGER :: k, m, n ! .. External Procedures .. EXTERNAL zgemm m = SIZE(c,1) n = SIZE(c,2) k = SIZE(a,2) CALL zgemm('N','N',m,n,k,one,a,m,b,k,zero,c,m) END SUBROUTINE zgemm_336 END MODULE zgemm_36