![]() |
Octopus
|
Data Types | |
| interface | lalg_axpy |
| constant times a vector plus a vector More... | |
| interface | lalg_copy |
| Copies a vector x, to a vector y. More... | |
| interface | lalg_gemm |
| Matrix-matrix multiplication plus matrix. More... | |
| interface | lalg_gemm_cc |
| lalg_gemm with both the (Hermitian) transpose of A and B. More... | |
| interface | lalg_gemm_cn |
| The same as above but with (Hermitian) transpose of A. More... | |
| interface | lalg_gemm_nc |
| The same as lalg_gemm but with (Hermitian) transpose of B. More... | |
| interface | lalg_gemv |
| interface | lalg_nrm2 |
| Returns the euclidean norm of a vector. More... | |
| interface | lalg_scal |
| scales a vector by a constant More... | |
| interface | lalg_swap |
| swap two vectors More... | |
| interface | lalg_symm |
| The following matrix multiplications all expect upper triangular matrices for a. For real matrices, \(A = A^T\), for complex matrices \(A = A^H\). More... | |
| interface | lalg_symv |
| Matrix-vector multiplication plus vector. More... | |
| interface | lalg_trmm |
| Matrix-matrix multiplication. More... | |
Functions/Subroutines | |
| subroutine | dgemm_simple (a, b, c, transa, transb, alpha, beta) |
| GEMM with a simplified API for two matrices of consistent shape and type. More... | |
| subroutine | swap_1_2 (n1, dx, dy) |
| subroutine | swap_2_2 (n1, n2, dx, dy) |
| subroutine | swap_3_2 (n1, n2, n3, dx, dy) |
| subroutine | swap_4_2 (n1, n2, n3, n4, dx, dy) |
| subroutine | scal_1_2 (n1, da, dx) |
| subroutine | scal_2_2 (n1, n2, da, dx) |
| subroutine | scal_3_2 (n1, n2, n3, da, dx) |
| subroutine | scal_4_2 (n1, n2, n3, n4, da, dx) |
| subroutine | axpy_1_2 (n1, da, dx, dy) |
| subroutine | axpy_2_2 (n1, n2, da, dx, dy) |
| subroutine | axpy_3_2 (n1, n2, n3, da, dx, dy) |
| subroutine | axpy_4_2 (n1, n2, n3, n4, da, dx, dy) |
| subroutine | copy_1_2 (n1, dx, dy) |
| subroutine | copy_2_2 (n1, n2, dx, dy) |
| subroutine | copy_3_2 (n1, n2, n3, dx, dy) |
| subroutine | copy_4_2 (n1, n2, n3, n4, dx, dy) |
| real(real64) function | nrm2_2 (n, dx) |
| subroutine | symv_1_2 (n, alpha, a, x, beta, y) |
| subroutine | symv_2_2 (n1, n2, alpha, a, x, beta, y) |
| subroutine | gemv_1_2 (m, n, alpha, a, x, beta, y) |
| subroutine | gemv_2_2 (m1, m2, n, alpha, a, x, beta, y) |
| subroutine | gemm_1_2 (m, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_2_2 (m1, m2, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_cn_1_2 (m, n, k, alpha, a, b, beta, c) |
| The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_cn_2_2 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_nc_1_2 (m, n, k, alpha, a, b, beta, c) |
| The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_nc_2_2 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_cc_1_2 (m, n, k, alpha, a, b, beta, c) |
| GEMM when both a and b are (Hermitian) transposes. More... | |
| subroutine | symm_1_2 (m, n, side, alpha, a, b, beta, c) |
| The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H. More... | |
| subroutine | trmm_1_2 (m, n, uplo, transa, side, alpha, a, b) |
| subroutine | swap_1_4 (n1, dx, dy) |
| subroutine | swap_2_4 (n1, n2, dx, dy) |
| subroutine | swap_3_4 (n1, n2, n3, dx, dy) |
| subroutine | swap_4_4 (n1, n2, n3, n4, dx, dy) |
| subroutine | scal_1_4 (n1, da, dx) |
| subroutine | scal_2_4 (n1, n2, da, dx) |
| subroutine | scal_3_4 (n1, n2, n3, da, dx) |
| subroutine | scal_4_4 (n1, n2, n3, n4, da, dx) |
| subroutine | scal_5_4 (n1, da, dx) |
| subroutine | scal_6_4 (n1, n2, da, dx) |
| subroutine | axpy_1_4 (n1, da, dx, dy) |
| subroutine | axpy_2_4 (n1, n2, da, dx, dy) |
| subroutine | axpy_3_4 (n1, n2, n3, da, dx, dy) |
| subroutine | axpy_4_4 (n1, n2, n3, n4, da, dx, dy) |
| subroutine | axpy_5_4 (n1, da, dx, dy) |
| subroutine | axpy_6_4 (n1, n2, da, dx, dy) |
| subroutine | axpy_7_4 (n1, n2, n3, da, dx, dy) |
| subroutine | copy_1_4 (n1, dx, dy) |
| subroutine | copy_2_4 (n1, n2, dx, dy) |
| subroutine | copy_3_4 (n1, n2, n3, dx, dy) |
| subroutine | copy_4_4 (n1, n2, n3, n4, dx, dy) |
| real(real64) function | nrm2_4 (n, dx) |
| subroutine | symv_1_4 (n, alpha, a, x, beta, y) |
| subroutine | symv_2_4 (n1, n2, alpha, a, x, beta, y) |
| subroutine | gemv_1_4 (m, n, alpha, a, x, beta, y) |
| subroutine | gemv_2_4 (m1, m2, n, alpha, a, x, beta, y) |
| subroutine | gemm_1_4 (m, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_2_4 (m1, m2, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_cn_1_4 (m, n, k, alpha, a, b, beta, c) |
| The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_cn_2_4 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_nc_1_4 (m, n, k, alpha, a, b, beta, c) |
| The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_nc_2_4 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_cc_1_4 (m, n, k, alpha, a, b, beta, c) |
| GEMM when both a and b are (Hermitian) transposes. More... | |
| subroutine | symm_1_4 (m, n, side, alpha, a, b, beta, c) |
| The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H. More... | |
| subroutine | trmm_1_4 (m, n, uplo, transa, side, alpha, a, b) |
| subroutine | swap_1_1 (n1, dx, dy) |
| subroutine | swap_2_1 (n1, n2, dx, dy) |
| subroutine | swap_3_1 (n1, n2, n3, dx, dy) |
| subroutine | swap_4_1 (n1, n2, n3, n4, dx, dy) |
| subroutine | scal_1_1 (n1, da, dx) |
| subroutine | scal_2_1 (n1, n2, da, dx) |
| subroutine | scal_3_1 (n1, n2, n3, da, dx) |
| subroutine | scal_4_1 (n1, n2, n3, n4, da, dx) |
| subroutine | axpy_1_1 (n1, da, dx, dy) |
| subroutine | axpy_2_1 (n1, n2, da, dx, dy) |
| subroutine | axpy_3_1 (n1, n2, n3, da, dx, dy) |
| subroutine | axpy_4_1 (n1, n2, n3, n4, da, dx, dy) |
| subroutine | copy_1_1 (n1, dx, dy) |
| subroutine | copy_2_1 (n1, n2, dx, dy) |
| subroutine | copy_3_1 (n1, n2, n3, dx, dy) |
| subroutine | copy_4_1 (n1, n2, n3, n4, dx, dy) |
| real(real32) function | nrm2_1 (n, dx) |
| subroutine | symv_1_1 (n, alpha, a, x, beta, y) |
| subroutine | symv_2_1 (n1, n2, alpha, a, x, beta, y) |
| subroutine | gemv_1_1 (m, n, alpha, a, x, beta, y) |
| subroutine | gemv_2_1 (m1, m2, n, alpha, a, x, beta, y) |
| subroutine | gemm_1_1 (m, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_2_1 (m1, m2, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_cn_1_1 (m, n, k, alpha, a, b, beta, c) |
| The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_cn_2_1 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_nc_1_1 (m, n, k, alpha, a, b, beta, c) |
| The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_nc_2_1 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_cc_1_1 (m, n, k, alpha, a, b, beta, c) |
| GEMM when both a and b are (Hermitian) transposes. More... | |
| subroutine | symm_1_1 (m, n, side, alpha, a, b, beta, c) |
| The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H. More... | |
| subroutine | trmm_1_1 (m, n, uplo, transa, side, alpha, a, b) |
| subroutine | swap_1_3 (n1, dx, dy) |
| subroutine | swap_2_3 (n1, n2, dx, dy) |
| subroutine | swap_3_3 (n1, n2, n3, dx, dy) |
| subroutine | swap_4_3 (n1, n2, n3, n4, dx, dy) |
| subroutine | scal_1_3 (n1, da, dx) |
| subroutine | scal_2_3 (n1, n2, da, dx) |
| subroutine | scal_3_3 (n1, n2, n3, da, dx) |
| subroutine | scal_4_3 (n1, n2, n3, n4, da, dx) |
| subroutine | scal_5_3 (n1, da, dx) |
| subroutine | scal_6_3 (n1, n2, da, dx) |
| subroutine | axpy_1_3 (n1, da, dx, dy) |
| subroutine | axpy_2_3 (n1, n2, da, dx, dy) |
| subroutine | axpy_3_3 (n1, n2, n3, da, dx, dy) |
| subroutine | axpy_4_3 (n1, n2, n3, n4, da, dx, dy) |
| subroutine | axpy_5_3 (n1, da, dx, dy) |
| subroutine | axpy_6_3 (n1, n2, da, dx, dy) |
| subroutine | axpy_7_3 (n1, n2, n3, da, dx, dy) |
| subroutine | copy_1_3 (n1, dx, dy) |
| subroutine | copy_2_3 (n1, n2, dx, dy) |
| subroutine | copy_3_3 (n1, n2, n3, dx, dy) |
| subroutine | copy_4_3 (n1, n2, n3, n4, dx, dy) |
| real(real32) function | nrm2_3 (n, dx) |
| subroutine | symv_1_3 (n, alpha, a, x, beta, y) |
| subroutine | symv_2_3 (n1, n2, alpha, a, x, beta, y) |
| subroutine | gemv_1_3 (m, n, alpha, a, x, beta, y) |
| subroutine | gemv_2_3 (m1, m2, n, alpha, a, x, beta, y) |
| subroutine | gemm_1_3 (m, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_2_3 (m1, m2, n, k, alpha, a, b, beta, c) |
| subroutine | gemm_cn_1_3 (m, n, k, alpha, a, b, beta, c) |
| The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_cn_2_3 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_nc_1_3 (m, n, k, alpha, a, b, beta, c) |
| The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real. More... | |
| subroutine | gemm_nc_2_3 (m1, m2, n1, n2, k, alpha, a, b, beta, c) |
| subroutine | gemm_cc_1_3 (m, n, k, alpha, a, b, beta, c) |
| GEMM when both a and b are (Hermitian) transposes. More... | |
| subroutine | symm_1_3 (m, n, side, alpha, a, b, beta, c) |
| The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H. More... | |
| subroutine | trmm_1_3 (m, n, uplo, transa, side, alpha, a, b) |
|
private |
GEMM with a simplified API for two matrices of consistent shape and type.
GEMM performs one of the matrix-matrix operations:
where op( X ) is one of:
operating on all elements of both matrices. If all defaults are used, the routine performs \(C = A B\). See the official [lapack](https: documentation for more details.
| [in,out] | c | If not summing to c, it does not need to be |
| [in] | transb | Transpose a and b |
| [in] | alpha | Scale the product, op( A )*op( B ) |
| [in] | beta | Scale input value of c. |
Definition at line 355 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 459 of file lalg_basic.F90.
|
private |
Definition at line 485 of file lalg_basic.F90.
|
private |
Definition at line 506 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 550 of file lalg_basic.F90.
|
private |
Definition at line 575 of file lalg_basic.F90.
|
private |
Definition at line 594 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 647 of file lalg_basic.F90.
|
private |
Definition at line 686 of file lalg_basic.F90.
|
private |
Definition at line 718 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 779 of file lalg_basic.F90.
|
private |
Definition at line 810 of file lalg_basic.F90.
|
private |
Definition at line 835 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 894 of file lalg_basic.F90.
|
private |
Definition at line 912 of file lalg_basic.F90.
|
private |
Definition at line 934 of file lalg_basic.F90.
|
private |
Definition at line 956 of file lalg_basic.F90.
|
private |
Definition at line 989 of file lalg_basic.F90.
|
private |
| [in] | a | a(m1, m2, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m1, m2, n) |
Definition at line 1010 of file lalg_basic.F90.
|
private |
The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.
| [in] | a | a(k, m) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 1036 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 1057 of file lalg_basic.F90.
|
private |
The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.
| [in] | a | a(m, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 1084 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 1105 of file lalg_basic.F90.
|
private |
GEMM when both a and b are (Hermitian) transposes.
\[ \mathbf{C} = \mathbf{A}^\dagger \mathbf{B}^\dagger \]
Note that one can equivalently perform:
\[ \mathbf{C} = \left[\mathbf{B} \mathbf{A} \right]^\dagger \]
It might be more efficient to replace the implementation with the second operation defined above - requires testing.
| [in] | a | a(k, m) |
| [in] | b | b(n, k) |
| [in,out] | c | c(m, n) |
Definition at line 1143 of file lalg_basic.F90.
|
private |
The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H.
Definition at line 1168 of file lalg_basic.F90.
|
private |
|
private |
|
private |
Definition at line 1292 of file lalg_basic.F90.
|
private |
Definition at line 1318 of file lalg_basic.F90.
|
private |
Definition at line 1339 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1383 of file lalg_basic.F90.
|
private |
Definition at line 1408 of file lalg_basic.F90.
|
private |
Definition at line 1427 of file lalg_basic.F90.
|
private |
Definition at line 1448 of file lalg_basic.F90.
|
private |
Definition at line 1465 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1525 of file lalg_basic.F90.
|
private |
Definition at line 1564 of file lalg_basic.F90.
|
private |
Definition at line 1596 of file lalg_basic.F90.
|
private |
Definition at line 1631 of file lalg_basic.F90.
|
private |
Definition at line 1656 of file lalg_basic.F90.
|
private |
Definition at line 1692 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1748 of file lalg_basic.F90.
|
private |
Definition at line 1779 of file lalg_basic.F90.
|
private |
Definition at line 1804 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1863 of file lalg_basic.F90.
|
private |
Definition at line 1881 of file lalg_basic.F90.
|
private |
Definition at line 1903 of file lalg_basic.F90.
|
private |
Definition at line 1925 of file lalg_basic.F90.
|
private |
Definition at line 1958 of file lalg_basic.F90.
|
private |
| [in] | a | a(m1, m2, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m1, m2, n) |
Definition at line 1979 of file lalg_basic.F90.
|
private |
The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.
| [in] | a | a(k, m) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 2005 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 2026 of file lalg_basic.F90.
|
private |
The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.
| [in] | a | a(m, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 2053 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 2074 of file lalg_basic.F90.
|
private |
GEMM when both a and b are (Hermitian) transposes.
\[ \mathbf{C} = \mathbf{A}^\dagger \mathbf{B}^\dagger \]
Note that one can equivalently perform:
\[ \mathbf{C} = \left[\mathbf{B} \mathbf{A} \right]^\dagger \]
It might be more efficient to replace the implementation with the second operation defined above - requires testing.
| [in] | a | a(k, m) |
| [in] | b | b(n, k) |
| [in,out] | c | c(m, n) |
Definition at line 2112 of file lalg_basic.F90.
|
private |
The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H.
Definition at line 2137 of file lalg_basic.F90.
|
private |
|
private |
|
private |
Definition at line 2261 of file lalg_basic.F90.
|
private |
Definition at line 2287 of file lalg_basic.F90.
|
private |
Definition at line 2308 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 2352 of file lalg_basic.F90.
|
private |
Definition at line 2377 of file lalg_basic.F90.
|
private |
Definition at line 2396 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 2449 of file lalg_basic.F90.
|
private |
Definition at line 2488 of file lalg_basic.F90.
|
private |
Definition at line 2520 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 2581 of file lalg_basic.F90.
|
private |
Definition at line 2612 of file lalg_basic.F90.
|
private |
Definition at line 2637 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 2696 of file lalg_basic.F90.
|
private |
Definition at line 2714 of file lalg_basic.F90.
|
private |
Definition at line 2736 of file lalg_basic.F90.
|
private |
Definition at line 2758 of file lalg_basic.F90.
|
private |
Definition at line 2791 of file lalg_basic.F90.
|
private |
| [in] | a | a(m1, m2, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m1, m2, n) |
Definition at line 2812 of file lalg_basic.F90.
|
private |
The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.
| [in] | a | a(k, m) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 2838 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 2859 of file lalg_basic.F90.
|
private |
The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.
| [in] | a | a(m, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 2886 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 2907 of file lalg_basic.F90.
|
private |
GEMM when both a and b are (Hermitian) transposes.
\[ \mathbf{C} = \mathbf{A}^\dagger \mathbf{B}^\dagger \]
Note that one can equivalently perform:
\[ \mathbf{C} = \left[\mathbf{B} \mathbf{A} \right]^\dagger \]
It might be more efficient to replace the implementation with the second operation defined above - requires testing.
| [in] | a | a(k, m) |
| [in] | b | b(n, k) |
| [in,out] | c | c(m, n) |
Definition at line 2945 of file lalg_basic.F90.
|
private |
The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H.
Definition at line 2970 of file lalg_basic.F90.
|
private |
|
private |
|
private |
Definition at line 3094 of file lalg_basic.F90.
|
private |
Definition at line 3120 of file lalg_basic.F90.
|
private |
Definition at line 3141 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 3185 of file lalg_basic.F90.
|
private |
Definition at line 3210 of file lalg_basic.F90.
|
private |
Definition at line 3229 of file lalg_basic.F90.
|
private |
Definition at line 3250 of file lalg_basic.F90.
|
private |
Definition at line 3267 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 3327 of file lalg_basic.F90.
|
private |
Definition at line 3366 of file lalg_basic.F90.
|
private |
Definition at line 3398 of file lalg_basic.F90.
|
private |
Definition at line 3433 of file lalg_basic.F90.
|
private |
Definition at line 3458 of file lalg_basic.F90.
|
private |
Definition at line 3494 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 3550 of file lalg_basic.F90.
|
private |
Definition at line 3581 of file lalg_basic.F90.
|
private |
Definition at line 3606 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 3665 of file lalg_basic.F90.
|
private |
Definition at line 3683 of file lalg_basic.F90.
|
private |
Definition at line 3705 of file lalg_basic.F90.
|
private |
Definition at line 3727 of file lalg_basic.F90.
|
private |
Definition at line 3760 of file lalg_basic.F90.
|
private |
| [in] | a | a(m1, m2, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m1, m2, n) |
Definition at line 3781 of file lalg_basic.F90.
|
private |
The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.
| [in] | a | a(k, m) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 3807 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 3828 of file lalg_basic.F90.
|
private |
The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.
| [in] | a | a(m, k) |
| [in] | b | b(k, n) |
| [in,out] | c | c(m, n) |
Definition at line 3855 of file lalg_basic.F90.
|
private |
| [in] | a | a(k, m2, m1) |
| [in] | b | b(k, n2, n1) |
| [in,out] | c | c(m1*m2, n1*n2) |
Definition at line 3876 of file lalg_basic.F90.
|
private |
GEMM when both a and b are (Hermitian) transposes.
\[ \mathbf{C} = \mathbf{A}^\dagger \mathbf{B}^\dagger \]
Note that one can equivalently perform:
\[ \mathbf{C} = \left[\mathbf{B} \mathbf{A} \right]^\dagger \]
It might be more efficient to replace the implementation with the second operation defined above - requires testing.
| [in] | a | a(k, m) |
| [in] | b | b(n, k) |
| [in,out] | c | c(m, n) |
Definition at line 3914 of file lalg_basic.F90.
|
private |
The following matrix multiplications all expect upper triangular matrices for a. For real matrices, a = a^T, for complex matrices a = a^H.
Definition at line 3939 of file lalg_basic.F90.
|
private |