![]() |
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 285 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 384 of file lalg_basic.F90.
|
private |
Definition at line 410 of file lalg_basic.F90.
|
private |
Definition at line 431 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 475 of file lalg_basic.F90.
|
private |
Definition at line 500 of file lalg_basic.F90.
|
private |
Definition at line 519 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 572 of file lalg_basic.F90.
|
private |
Definition at line 611 of file lalg_basic.F90.
|
private |
Definition at line 643 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 704 of file lalg_basic.F90.
|
private |
Definition at line 735 of file lalg_basic.F90.
|
private |
Definition at line 760 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 819 of file lalg_basic.F90.
|
private |
Definition at line 837 of file lalg_basic.F90.
|
private |
Definition at line 859 of file lalg_basic.F90.
|
private |
Definition at line 878 of file lalg_basic.F90.
|
private |
Definition at line 909 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 930 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 956 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 977 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 1004 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 1025 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 1063 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 1088 of file lalg_basic.F90.
|
private |
|
private |
|
private |
Definition at line 1205 of file lalg_basic.F90.
|
private |
Definition at line 1231 of file lalg_basic.F90.
|
private |
Definition at line 1252 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1296 of file lalg_basic.F90.
|
private |
Definition at line 1321 of file lalg_basic.F90.
|
private |
Definition at line 1340 of file lalg_basic.F90.
|
private |
Definition at line 1361 of file lalg_basic.F90.
|
private |
Definition at line 1378 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1438 of file lalg_basic.F90.
|
private |
Definition at line 1477 of file lalg_basic.F90.
|
private |
Definition at line 1509 of file lalg_basic.F90.
|
private |
Definition at line 1544 of file lalg_basic.F90.
|
private |
Definition at line 1569 of file lalg_basic.F90.
|
private |
Definition at line 1605 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1661 of file lalg_basic.F90.
|
private |
Definition at line 1692 of file lalg_basic.F90.
|
private |
Definition at line 1717 of file lalg_basic.F90.
|
private |
|
private |
Definition at line 1776 of file lalg_basic.F90.
|
private |
Definition at line 1794 of file lalg_basic.F90.
|
private |
Definition at line 1816 of file lalg_basic.F90.
|
private |
Definition at line 1835 of file lalg_basic.F90.
|
private |
Definition at line 1866 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 1887 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 1913 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 1934 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 1961 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 1982 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 2020 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 2045 of file lalg_basic.F90.
|
private |