![]() |
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) |
|
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 287 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 386 of file lalg_basic.F90.
|
private |
Definition at line 412 of file lalg_basic.F90.
|
private |
Definition at line 433 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 477 of file lalg_basic.F90.
|
private |
Definition at line 502 of file lalg_basic.F90.
|
private |
Definition at line 521 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 574 of file lalg_basic.F90.
|
private |
Definition at line 613 of file lalg_basic.F90.
|
private |
Definition at line 645 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 706 of file lalg_basic.F90.
|
private |
Definition at line 737 of file lalg_basic.F90.
|
private |
Definition at line 762 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 821 of file lalg_basic.F90.
|
private |
Definition at line 839 of file lalg_basic.F90.
|
private |
Definition at line 861 of file lalg_basic.F90.
|
private |
Definition at line 880 of file lalg_basic.F90.
|
private |
Definition at line 911 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 932 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 958 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 979 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(n, k) |
[in,out] | c | c(m, n) |
Definition at line 1006 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 1027 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 1065 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 1090 of file lalg_basic.F90.
|
private |
|
private |
|
private |
Definition at line 1207 of file lalg_basic.F90.
|
private |
Definition at line 1233 of file lalg_basic.F90.
|
private |
Definition at line 1254 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1298 of file lalg_basic.F90.
|
private |
Definition at line 1323 of file lalg_basic.F90.
|
private |
Definition at line 1342 of file lalg_basic.F90.
|
private |
Definition at line 1363 of file lalg_basic.F90.
|
private |
Definition at line 1380 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1440 of file lalg_basic.F90.
|
private |
Definition at line 1479 of file lalg_basic.F90.
|
private |
Definition at line 1511 of file lalg_basic.F90.
|
private |
Definition at line 1546 of file lalg_basic.F90.
|
private |
Definition at line 1571 of file lalg_basic.F90.
|
private |
Definition at line 1607 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1663 of file lalg_basic.F90.
|
private |
Definition at line 1694 of file lalg_basic.F90.
|
private |
Definition at line 1719 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1778 of file lalg_basic.F90.
|
private |
Definition at line 1796 of file lalg_basic.F90.
|
private |
Definition at line 1818 of file lalg_basic.F90.
|
private |
Definition at line 1837 of file lalg_basic.F90.
|
private |
Definition at line 1868 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 1889 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 1915 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 1936 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(n, k) |
[in,out] | c | c(m, n) |
Definition at line 1963 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 1984 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 2022 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 2047 of file lalg_basic.F90.
|
private |