Octopus
lalg_basic_oct_m Module Reference

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)
 

Function/Subroutine Documentation

◆ dgemm_simple()

subroutine lalg_basic_oct_m::dgemm_simple ( real(real64), dimension(:,:), intent(in), contiguous  a,
real(real64), dimension(:,:), intent(in), contiguous  b,
real(real64), dimension(:,:), intent(inout), contiguous  c,
character(len=1), intent(in), optional  transa,
character(len=1), intent(in), optional  transb,
real(real64), intent(in), optional  alpha,
real(real64), intent(in), optional  beta 
)
private

GEMM with a simplified API for two matrices of consistent shape and type.

GEMM performs one of the matrix-matrix operations:

c := alpha*op( a )*op( b ) + beta*c,

where op( X ) is one of:

op( x ) = x or op( x ) = x**t
either or(at your option) !! any later version. !! !! This program is distributed in the hope that it will be useful

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.

Parameters
[in,out]cIf not summing to c, it does not need to be
[in]transbTranspose a and b
[in]alphaScale the product, op( A )*op( B )
[in]betaScale input value of c.

Definition at line 355 of file lalg_basic.F90.

◆ swap_1_2()

subroutine lalg_basic_oct_m::swap_1_2 ( integer, intent(in)  n1,
real(real64), dimension(:), intent(inout), contiguous  dx,
real(real64), dimension(:), intent(inout), contiguous  dy 
)
private

BLAS level I

Definition at line 442 of file lalg_basic.F90.

◆ swap_2_2()

subroutine lalg_basic_oct_m::swap_2_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), dimension(:,:), intent(inout), contiguous  dx,
real(real64), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 459 of file lalg_basic.F90.

◆ swap_3_2()

subroutine lalg_basic_oct_m::swap_3_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real64), dimension(:,:,:), intent(inout), contiguous  dx,
real(real64), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 485 of file lalg_basic.F90.

◆ swap_4_2()

subroutine lalg_basic_oct_m::swap_4_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real64), dimension(:,:,:,:), intent(inout), contiguous  dx,
real(real64), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 506 of file lalg_basic.F90.

◆ scal_1_2()

subroutine lalg_basic_oct_m::scal_1_2 ( integer, intent(in)  n1,
real(real64), intent(in)  da,
real(real64), dimension(:), intent(inout), contiguous  dx 
)
private

scales a vector by a constant

Definition at line 533 of file lalg_basic.F90.

◆ scal_2_2()

subroutine lalg_basic_oct_m::scal_2_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), intent(in)  da,
real(real64), dimension(:, :), intent(inout), contiguous  dx 
)
private

Definition at line 550 of file lalg_basic.F90.

◆ scal_3_2()

subroutine lalg_basic_oct_m::scal_3_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real64), intent(in)  da,
real(real64), dimension(:, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 575 of file lalg_basic.F90.

◆ scal_4_2()

subroutine lalg_basic_oct_m::scal_4_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real64), intent(in)  da,
real(real64), dimension(:, :, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 594 of file lalg_basic.F90.

◆ axpy_1_2()

subroutine lalg_basic_oct_m::axpy_1_2 ( integer, intent(in)  n1,
real(real64), intent(in)  da,
real(real64), dimension(:), intent(in), contiguous  dx,
real(real64), dimension(:), intent(inout), contiguous  dy 
)
private

constant times a vector plus a vector

Definition at line 618 of file lalg_basic.F90.

◆ axpy_2_2()

subroutine lalg_basic_oct_m::axpy_2_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), intent(in)  da,
real(real64), dimension(:, :), intent(in), contiguous  dx,
real(real64), dimension(:, :), intent(inout), contiguous  dy 
)
private

Definition at line 647 of file lalg_basic.F90.

◆ axpy_3_2()

subroutine lalg_basic_oct_m::axpy_3_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real64), intent(in)  da,
real(real64), dimension(:, :, :), intent(in), contiguous  dx,
real(real64), dimension(:, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 686 of file lalg_basic.F90.

◆ axpy_4_2()

subroutine lalg_basic_oct_m::axpy_4_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real64), intent(in)  da,
real(real64), dimension(:, :, :, :), intent(in), contiguous  dx,
real(real64), dimension(:, :, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 718 of file lalg_basic.F90.

◆ copy_1_2()

subroutine lalg_basic_oct_m::copy_1_2 ( integer, intent(in)  n1,
real(real64), dimension(:), intent(in), contiguous  dx,
real(real64), dimension(:), intent(inout), contiguous  dy 
)
private

Copies a vector x, to a vector y

Definition at line 756 of file lalg_basic.F90.

◆ copy_2_2()

subroutine lalg_basic_oct_m::copy_2_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), dimension(:,:), intent(in), contiguous  dx,
real(real64), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 779 of file lalg_basic.F90.

◆ copy_3_2()

subroutine lalg_basic_oct_m::copy_3_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real64), dimension(:,:,:), intent(in), contiguous  dx,
real(real64), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 810 of file lalg_basic.F90.

◆ copy_4_2()

subroutine lalg_basic_oct_m::copy_4_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real64), dimension(:,:,:,:), intent(in), contiguous  dx,
real(real64), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 835 of file lalg_basic.F90.

◆ nrm2_2()

real(real64) function lalg_basic_oct_m::nrm2_2 ( integer, intent(in)  n,
real(real64), dimension(:), intent(in)  dx 
)
private

Returns the euclidean norm of a vector

Definition at line 866 of file lalg_basic.F90.

◆ symv_1_2()

subroutine lalg_basic_oct_m::symv_1_2 ( integer, intent(in)  n,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :), intent(in), contiguous  a,
real(real64), dimension(:), intent(in), contiguous  x,
real(real64), intent(in)  beta,
real(real64), dimension(:), intent(inout), contiguous  y 
)
private

BLAS level II

Matrix-vector multiplication plus vector.

Definition at line 894 of file lalg_basic.F90.

◆ symv_2_2()

subroutine lalg_basic_oct_m::symv_2_2 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :, :), intent(in), contiguous  a,
real(real64), dimension(:), intent(in), contiguous  x,
real(real64), intent(in)  beta,
real(real64), dimension(:, :), intent(inout), contiguous  y 
)
private

Definition at line 912 of file lalg_basic.F90.

◆ gemv_1_2()

subroutine lalg_basic_oct_m::gemv_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
real(real64), intent(in)  alpha,
real(real64), dimension(:,:), intent(in), contiguous  a,
real(real64), dimension(:), intent(in), contiguous  x,
real(real64), intent(in)  beta,
real(real64), dimension(:), intent(inout), contiguous  y 
)
private

Definition at line 934 of file lalg_basic.F90.

◆ gemv_2_2()

subroutine lalg_basic_oct_m::gemv_2_2 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
real(real64), intent(in)  alpha,
real(real64), dimension(:,:,:), intent(in), contiguous  a,
real(real64), dimension(:), intent(in), contiguous  x,
real(real64), intent(in)  beta,
real(real64), dimension(:,:), intent(inout), contiguous  y 
)
private

Definition at line 956 of file lalg_basic.F90.

◆ gemm_1_2()

subroutine lalg_basic_oct_m::gemm_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:,:), intent(in), contiguous  a,
real(real64), dimension(:,:), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:,:), intent(inout), contiguous  c 
)
private

BLAS level III

Matrix-matrix multiplication plus matrix.

Definition at line 989 of file lalg_basic.F90.

◆ gemm_2_2()

subroutine lalg_basic_oct_m::gemm_2_2 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :, :), intent(in), contiguous  a,
real(real64), dimension(:, :), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:, :, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(m1, m2, k)
[in]bb(k, n)
[in,out]cc(m1, m2, n)

Definition at line 1010 of file lalg_basic.F90.

◆ gemm_cn_1_2()

subroutine lalg_basic_oct_m::gemm_cn_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:,:), intent(in), contiguous  a,
real(real64), dimension(:,:), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.

Parameters
[in]aa(k, m)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 1036 of file lalg_basic.F90.

◆ gemm_cn_2_2()

subroutine lalg_basic_oct_m::gemm_cn_2_2 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :, :), intent(in), contiguous  a,
real(real64), dimension(:, :, :), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 1057 of file lalg_basic.F90.

◆ gemm_nc_1_2()

subroutine lalg_basic_oct_m::gemm_nc_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:,:), intent(in), contiguous  a,
real(real64), dimension(:,:), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.

Parameters
[in]aa(m, k)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 1084 of file lalg_basic.F90.

◆ gemm_nc_2_2()

subroutine lalg_basic_oct_m::gemm_nc_2_2 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :, :), intent(in), contiguous  a,
real(real64), dimension(:, :, :), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 1105 of file lalg_basic.F90.

◆ gemm_cc_1_2()

subroutine lalg_basic_oct_m::gemm_cc_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real64), intent(in)  alpha,
real(real64), dimension(:,:), intent(in), contiguous  a,
real(real64), dimension(:,:), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:,:), intent(inout), contiguous  c 
)
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.

Parameters
[in]aa(k, m)
[in]bb(n, k)
[in,out]cc(m, n)

Definition at line 1143 of file lalg_basic.F90.

◆ symm_1_2()

subroutine lalg_basic_oct_m::symm_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  side,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :), intent(in), contiguous  a,
real(real64), dimension(:, :), intent(in), contiguous  b,
real(real64), intent(in)  beta,
real(real64), dimension(:, :), intent(inout), contiguous  c 
)
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.

◆ trmm_1_2()

subroutine lalg_basic_oct_m::trmm_1_2 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  uplo,
character(1), intent(in)  transa,
character(1), intent(in)  side,
real(real64), intent(in)  alpha,
real(real64), dimension(:, :), intent(in), contiguous  a,
real(real64), dimension(:, :), intent(inout), contiguous  b 
)
private

Matrix-matrix multiplication.

Definition at line 1200 of file lalg_basic.F90.

◆ swap_1_4()

subroutine lalg_basic_oct_m::swap_1_4 ( integer, intent(in)  n1,
complex(real64), dimension(:), intent(inout), contiguous  dx,
complex(real64), dimension(:), intent(inout), contiguous  dy 
)
private

BLAS level I

Definition at line 1275 of file lalg_basic.F90.

◆ swap_2_4()

subroutine lalg_basic_oct_m::swap_2_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real64), dimension(:,:), intent(inout), contiguous  dx,
complex(real64), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 1292 of file lalg_basic.F90.

◆ swap_3_4()

subroutine lalg_basic_oct_m::swap_3_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real64), dimension(:,:,:), intent(inout), contiguous  dx,
complex(real64), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 1318 of file lalg_basic.F90.

◆ swap_4_4()

subroutine lalg_basic_oct_m::swap_4_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real64), dimension(:,:,:,:), intent(inout), contiguous  dx,
complex(real64), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 1339 of file lalg_basic.F90.

◆ scal_1_4()

subroutine lalg_basic_oct_m::scal_1_4 ( integer, intent(in)  n1,
complex(real64), intent(in)  da,
complex(real64), dimension(:), intent(inout), contiguous  dx 
)
private

scales a vector by a constant

Definition at line 1366 of file lalg_basic.F90.

◆ scal_2_4()

subroutine lalg_basic_oct_m::scal_2_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real64), intent(in)  da,
complex(real64), dimension(:, :), intent(inout), contiguous  dx 
)
private

Definition at line 1383 of file lalg_basic.F90.

◆ scal_3_4()

subroutine lalg_basic_oct_m::scal_3_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real64), intent(in)  da,
complex(real64), dimension(:, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 1408 of file lalg_basic.F90.

◆ scal_4_4()

subroutine lalg_basic_oct_m::scal_4_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real64), intent(in)  da,
complex(real64), dimension(:, :, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 1427 of file lalg_basic.F90.

◆ scal_5_4()

subroutine lalg_basic_oct_m::scal_5_4 ( integer, intent(in)  n1,
real(real64), intent(in)  da,
complex(real64), dimension(:), intent(inout), contiguous  dx 
)
private

Definition at line 1448 of file lalg_basic.F90.

◆ scal_6_4()

subroutine lalg_basic_oct_m::scal_6_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), intent(in)  da,
complex(real64), dimension(:, :), intent(inout), contiguous  dx 
)
private

Definition at line 1465 of file lalg_basic.F90.

◆ axpy_1_4()

subroutine lalg_basic_oct_m::axpy_1_4 ( integer, intent(in)  n1,
complex(real64), intent(in)  da,
complex(real64), dimension(:), intent(in), contiguous  dx,
complex(real64), dimension(:), intent(inout), contiguous  dy 
)
private

constant times a vector plus a vector

Definition at line 1496 of file lalg_basic.F90.

◆ axpy_2_4()

subroutine lalg_basic_oct_m::axpy_2_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real64), intent(in)  da,
complex(real64), dimension(:, :), intent(in), contiguous  dx,
complex(real64), dimension(:, :), intent(inout), contiguous  dy 
)
private

Definition at line 1525 of file lalg_basic.F90.

◆ axpy_3_4()

subroutine lalg_basic_oct_m::axpy_3_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real64), intent(in)  da,
complex(real64), dimension(:, :, :), intent(in), contiguous  dx,
complex(real64), dimension(:, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 1564 of file lalg_basic.F90.

◆ axpy_4_4()

subroutine lalg_basic_oct_m::axpy_4_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real64), intent(in)  da,
complex(real64), dimension(:, :, :, :), intent(in), contiguous  dx,
complex(real64), dimension(:, :, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 1596 of file lalg_basic.F90.

◆ axpy_5_4()

subroutine lalg_basic_oct_m::axpy_5_4 ( integer, intent(in)  n1,
real(real64), intent(in)  da,
complex(real64), dimension(:), intent(in), contiguous  dx,
complex(real64), dimension(:), intent(inout), contiguous  dy 
)
private

Definition at line 1631 of file lalg_basic.F90.

◆ axpy_6_4()

subroutine lalg_basic_oct_m::axpy_6_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real64), intent(in)  da,
complex(real64), dimension(:, :), intent(in), contiguous  dx,
complex(real64), dimension(:, :), intent(inout), contiguous  dy 
)
private

Definition at line 1656 of file lalg_basic.F90.

◆ axpy_7_4()

subroutine lalg_basic_oct_m::axpy_7_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real64), intent(in)  da,
complex(real64), dimension(:, :, :), intent(in), contiguous  dx,
complex(real64), dimension(:, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 1692 of file lalg_basic.F90.

◆ copy_1_4()

subroutine lalg_basic_oct_m::copy_1_4 ( integer, intent(in)  n1,
complex(real64), dimension(:), intent(in), contiguous  dx,
complex(real64), dimension(:), intent(inout), contiguous  dy 
)
private

Copies a vector x, to a vector y

Definition at line 1725 of file lalg_basic.F90.

◆ copy_2_4()

subroutine lalg_basic_oct_m::copy_2_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real64), dimension(:,:), intent(in), contiguous  dx,
complex(real64), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 1748 of file lalg_basic.F90.

◆ copy_3_4()

subroutine lalg_basic_oct_m::copy_3_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real64), dimension(:,:,:), intent(in), contiguous  dx,
complex(real64), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 1779 of file lalg_basic.F90.

◆ copy_4_4()

subroutine lalg_basic_oct_m::copy_4_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real64), dimension(:,:,:,:), intent(in), contiguous  dx,
complex(real64), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 1804 of file lalg_basic.F90.

◆ nrm2_4()

real(real64) function lalg_basic_oct_m::nrm2_4 ( integer, intent(in)  n,
complex(real64), dimension(:), intent(in)  dx 
)
private

Returns the euclidean norm of a vector

Definition at line 1835 of file lalg_basic.F90.

◆ symv_1_4()

subroutine lalg_basic_oct_m::symv_1_4 ( integer, intent(in)  n,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :), intent(in), contiguous  a,
complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), intent(in)  beta,
complex(real64), dimension(:), intent(inout), contiguous  y 
)
private

BLAS level II

Matrix-vector multiplication plus vector.

Definition at line 1863 of file lalg_basic.F90.

◆ symv_2_4()

subroutine lalg_basic_oct_m::symv_2_4 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :, :), intent(in), contiguous  a,
complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), intent(in)  beta,
complex(real64), dimension(:, :), intent(inout), contiguous  y 
)
private

Definition at line 1881 of file lalg_basic.F90.

◆ gemv_1_4()

subroutine lalg_basic_oct_m::gemv_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:,:), intent(in), contiguous  a,
complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), intent(in)  beta,
complex(real64), dimension(:), intent(inout), contiguous  y 
)
private

Definition at line 1903 of file lalg_basic.F90.

◆ gemv_2_4()

subroutine lalg_basic_oct_m::gemv_2_4 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:,:,:), intent(in), contiguous  a,
complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), intent(in)  beta,
complex(real64), dimension(:,:), intent(inout), contiguous  y 
)
private

Definition at line 1925 of file lalg_basic.F90.

◆ gemm_1_4()

subroutine lalg_basic_oct_m::gemm_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:,:), intent(in), contiguous  a,
complex(real64), dimension(:,:), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:,:), intent(inout), contiguous  c 
)
private

BLAS level III

Matrix-matrix multiplication plus matrix.

Definition at line 1958 of file lalg_basic.F90.

◆ gemm_2_4()

subroutine lalg_basic_oct_m::gemm_2_4 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :, :), intent(in), contiguous  a,
complex(real64), dimension(:, :), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:, :, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(m1, m2, k)
[in]bb(k, n)
[in,out]cc(m1, m2, n)

Definition at line 1979 of file lalg_basic.F90.

◆ gemm_cn_1_4()

subroutine lalg_basic_oct_m::gemm_cn_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:,:), intent(in), contiguous  a,
complex(real64), dimension(:,:), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.

Parameters
[in]aa(k, m)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 2005 of file lalg_basic.F90.

◆ gemm_cn_2_4()

subroutine lalg_basic_oct_m::gemm_cn_2_4 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :, :), intent(in), contiguous  a,
complex(real64), dimension(:, :, :), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 2026 of file lalg_basic.F90.

◆ gemm_nc_1_4()

subroutine lalg_basic_oct_m::gemm_nc_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:,:), intent(in), contiguous  a,
complex(real64), dimension(:,:), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.

Parameters
[in]aa(m, k)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 2053 of file lalg_basic.F90.

◆ gemm_nc_2_4()

subroutine lalg_basic_oct_m::gemm_nc_2_4 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :, :), intent(in), contiguous  a,
complex(real64), dimension(:, :, :), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 2074 of file lalg_basic.F90.

◆ gemm_cc_1_4()

subroutine lalg_basic_oct_m::gemm_cc_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:,:), intent(in), contiguous  a,
complex(real64), dimension(:,:), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:,:), intent(inout), contiguous  c 
)
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.

Parameters
[in]aa(k, m)
[in]bb(n, k)
[in,out]cc(m, n)

Definition at line 2112 of file lalg_basic.F90.

◆ symm_1_4()

subroutine lalg_basic_oct_m::symm_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  side,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :), intent(in), contiguous  a,
complex(real64), dimension(:, :), intent(in), contiguous  b,
complex(real64), intent(in)  beta,
complex(real64), dimension(:, :), intent(inout), contiguous  c 
)
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.

◆ trmm_1_4()

subroutine lalg_basic_oct_m::trmm_1_4 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  uplo,
character(1), intent(in)  transa,
character(1), intent(in)  side,
complex(real64), intent(in)  alpha,
complex(real64), dimension(:, :), intent(in), contiguous  a,
complex(real64), dimension(:, :), intent(inout), contiguous  b 
)
private

Matrix-matrix multiplication.

Definition at line 2169 of file lalg_basic.F90.

◆ swap_1_1()

subroutine lalg_basic_oct_m::swap_1_1 ( integer, intent(in)  n1,
real(real32), dimension(:), intent(inout), contiguous  dx,
real(real32), dimension(:), intent(inout), contiguous  dy 
)
private

BLAS level I

Definition at line 2244 of file lalg_basic.F90.

◆ swap_2_1()

subroutine lalg_basic_oct_m::swap_2_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), dimension(:,:), intent(inout), contiguous  dx,
real(real32), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 2261 of file lalg_basic.F90.

◆ swap_3_1()

subroutine lalg_basic_oct_m::swap_3_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real32), dimension(:,:,:), intent(inout), contiguous  dx,
real(real32), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 2287 of file lalg_basic.F90.

◆ swap_4_1()

subroutine lalg_basic_oct_m::swap_4_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real32), dimension(:,:,:,:), intent(inout), contiguous  dx,
real(real32), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 2308 of file lalg_basic.F90.

◆ scal_1_1()

subroutine lalg_basic_oct_m::scal_1_1 ( integer, intent(in)  n1,
real(real32), intent(in)  da,
real(real32), dimension(:), intent(inout), contiguous  dx 
)
private

scales a vector by a constant

Definition at line 2335 of file lalg_basic.F90.

◆ scal_2_1()

subroutine lalg_basic_oct_m::scal_2_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), intent(in)  da,
real(real32), dimension(:, :), intent(inout), contiguous  dx 
)
private

Definition at line 2352 of file lalg_basic.F90.

◆ scal_3_1()

subroutine lalg_basic_oct_m::scal_3_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real32), intent(in)  da,
real(real32), dimension(:, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 2377 of file lalg_basic.F90.

◆ scal_4_1()

subroutine lalg_basic_oct_m::scal_4_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real32), intent(in)  da,
real(real32), dimension(:, :, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 2396 of file lalg_basic.F90.

◆ axpy_1_1()

subroutine lalg_basic_oct_m::axpy_1_1 ( integer, intent(in)  n1,
real(real32), intent(in)  da,
real(real32), dimension(:), intent(in), contiguous  dx,
real(real32), dimension(:), intent(inout), contiguous  dy 
)
private

constant times a vector plus a vector

Definition at line 2420 of file lalg_basic.F90.

◆ axpy_2_1()

subroutine lalg_basic_oct_m::axpy_2_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), intent(in)  da,
real(real32), dimension(:, :), intent(in), contiguous  dx,
real(real32), dimension(:, :), intent(inout), contiguous  dy 
)
private

Definition at line 2449 of file lalg_basic.F90.

◆ axpy_3_1()

subroutine lalg_basic_oct_m::axpy_3_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real32), intent(in)  da,
real(real32), dimension(:, :, :), intent(in), contiguous  dx,
real(real32), dimension(:, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 2488 of file lalg_basic.F90.

◆ axpy_4_1()

subroutine lalg_basic_oct_m::axpy_4_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real32), intent(in)  da,
real(real32), dimension(:, :, :, :), intent(in), contiguous  dx,
real(real32), dimension(:, :, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 2520 of file lalg_basic.F90.

◆ copy_1_1()

subroutine lalg_basic_oct_m::copy_1_1 ( integer, intent(in)  n1,
real(real32), dimension(:), intent(in), contiguous  dx,
real(real32), dimension(:), intent(inout), contiguous  dy 
)
private

Copies a vector x, to a vector y

Definition at line 2558 of file lalg_basic.F90.

◆ copy_2_1()

subroutine lalg_basic_oct_m::copy_2_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), dimension(:,:), intent(in), contiguous  dx,
real(real32), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 2581 of file lalg_basic.F90.

◆ copy_3_1()

subroutine lalg_basic_oct_m::copy_3_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real32), dimension(:,:,:), intent(in), contiguous  dx,
real(real32), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 2612 of file lalg_basic.F90.

◆ copy_4_1()

subroutine lalg_basic_oct_m::copy_4_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
real(real32), dimension(:,:,:,:), intent(in), contiguous  dx,
real(real32), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 2637 of file lalg_basic.F90.

◆ nrm2_1()

real(real32) function lalg_basic_oct_m::nrm2_1 ( integer, intent(in)  n,
real(real32), dimension(:), intent(in)  dx 
)
private

Returns the euclidean norm of a vector

Definition at line 2668 of file lalg_basic.F90.

◆ symv_1_1()

subroutine lalg_basic_oct_m::symv_1_1 ( integer, intent(in)  n,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :), intent(in), contiguous  a,
real(real32), dimension(:), intent(in), contiguous  x,
real(real32), intent(in)  beta,
real(real32), dimension(:), intent(inout), contiguous  y 
)
private

BLAS level II

Matrix-vector multiplication plus vector.

Definition at line 2696 of file lalg_basic.F90.

◆ symv_2_1()

subroutine lalg_basic_oct_m::symv_2_1 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :, :), intent(in), contiguous  a,
real(real32), dimension(:), intent(in), contiguous  x,
real(real32), intent(in)  beta,
real(real32), dimension(:, :), intent(inout), contiguous  y 
)
private

Definition at line 2714 of file lalg_basic.F90.

◆ gemv_1_1()

subroutine lalg_basic_oct_m::gemv_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
real(real32), intent(in)  alpha,
real(real32), dimension(:,:), intent(in), contiguous  a,
real(real32), dimension(:), intent(in), contiguous  x,
real(real32), intent(in)  beta,
real(real32), dimension(:), intent(inout), contiguous  y 
)
private

Definition at line 2736 of file lalg_basic.F90.

◆ gemv_2_1()

subroutine lalg_basic_oct_m::gemv_2_1 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
real(real32), intent(in)  alpha,
real(real32), dimension(:,:,:), intent(in), contiguous  a,
real(real32), dimension(:), intent(in), contiguous  x,
real(real32), intent(in)  beta,
real(real32), dimension(:,:), intent(inout), contiguous  y 
)
private

Definition at line 2758 of file lalg_basic.F90.

◆ gemm_1_1()

subroutine lalg_basic_oct_m::gemm_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:,:), intent(in), contiguous  a,
real(real32), dimension(:,:), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:,:), intent(inout), contiguous  c 
)
private

BLAS level III

Matrix-matrix multiplication plus matrix.

Definition at line 2791 of file lalg_basic.F90.

◆ gemm_2_1()

subroutine lalg_basic_oct_m::gemm_2_1 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :, :), intent(in), contiguous  a,
real(real32), dimension(:, :), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:, :, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(m1, m2, k)
[in]bb(k, n)
[in,out]cc(m1, m2, n)

Definition at line 2812 of file lalg_basic.F90.

◆ gemm_cn_1_1()

subroutine lalg_basic_oct_m::gemm_cn_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:,:), intent(in), contiguous  a,
real(real32), dimension(:,:), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.

Parameters
[in]aa(k, m)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 2838 of file lalg_basic.F90.

◆ gemm_cn_2_1()

subroutine lalg_basic_oct_m::gemm_cn_2_1 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :, :), intent(in), contiguous  a,
real(real32), dimension(:, :, :), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 2859 of file lalg_basic.F90.

◆ gemm_nc_1_1()

subroutine lalg_basic_oct_m::gemm_nc_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:,:), intent(in), contiguous  a,
real(real32), dimension(:,:), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.

Parameters
[in]aa(m, k)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 2886 of file lalg_basic.F90.

◆ gemm_nc_2_1()

subroutine lalg_basic_oct_m::gemm_nc_2_1 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :, :), intent(in), contiguous  a,
real(real32), dimension(:, :, :), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 2907 of file lalg_basic.F90.

◆ gemm_cc_1_1()

subroutine lalg_basic_oct_m::gemm_cc_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
real(real32), intent(in)  alpha,
real(real32), dimension(:,:), intent(in), contiguous  a,
real(real32), dimension(:,:), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:,:), intent(inout), contiguous  c 
)
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.

Parameters
[in]aa(k, m)
[in]bb(n, k)
[in,out]cc(m, n)

Definition at line 2945 of file lalg_basic.F90.

◆ symm_1_1()

subroutine lalg_basic_oct_m::symm_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  side,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :), intent(in), contiguous  a,
real(real32), dimension(:, :), intent(in), contiguous  b,
real(real32), intent(in)  beta,
real(real32), dimension(:, :), intent(inout), contiguous  c 
)
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.

◆ trmm_1_1()

subroutine lalg_basic_oct_m::trmm_1_1 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  uplo,
character(1), intent(in)  transa,
character(1), intent(in)  side,
real(real32), intent(in)  alpha,
real(real32), dimension(:, :), intent(in), contiguous  a,
real(real32), dimension(:, :), intent(inout), contiguous  b 
)
private

Matrix-matrix multiplication.

Definition at line 3002 of file lalg_basic.F90.

◆ swap_1_3()

subroutine lalg_basic_oct_m::swap_1_3 ( integer, intent(in)  n1,
complex(real32), dimension(:), intent(inout), contiguous  dx,
complex(real32), dimension(:), intent(inout), contiguous  dy 
)
private

BLAS level I

Definition at line 3077 of file lalg_basic.F90.

◆ swap_2_3()

subroutine lalg_basic_oct_m::swap_2_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real32), dimension(:,:), intent(inout), contiguous  dx,
complex(real32), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 3094 of file lalg_basic.F90.

◆ swap_3_3()

subroutine lalg_basic_oct_m::swap_3_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real32), dimension(:,:,:), intent(inout), contiguous  dx,
complex(real32), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 3120 of file lalg_basic.F90.

◆ swap_4_3()

subroutine lalg_basic_oct_m::swap_4_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real32), dimension(:,:,:,:), intent(inout), contiguous  dx,
complex(real32), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 3141 of file lalg_basic.F90.

◆ scal_1_3()

subroutine lalg_basic_oct_m::scal_1_3 ( integer, intent(in)  n1,
complex(real32), intent(in)  da,
complex(real32), dimension(:), intent(inout), contiguous  dx 
)
private

scales a vector by a constant

Definition at line 3168 of file lalg_basic.F90.

◆ scal_2_3()

subroutine lalg_basic_oct_m::scal_2_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real32), intent(in)  da,
complex(real32), dimension(:, :), intent(inout), contiguous  dx 
)
private

Definition at line 3185 of file lalg_basic.F90.

◆ scal_3_3()

subroutine lalg_basic_oct_m::scal_3_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real32), intent(in)  da,
complex(real32), dimension(:, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 3210 of file lalg_basic.F90.

◆ scal_4_3()

subroutine lalg_basic_oct_m::scal_4_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real32), intent(in)  da,
complex(real32), dimension(:, :, :, :), intent(inout), contiguous  dx 
)
private

Definition at line 3229 of file lalg_basic.F90.

◆ scal_5_3()

subroutine lalg_basic_oct_m::scal_5_3 ( integer, intent(in)  n1,
real(real32), intent(in)  da,
complex(real32), dimension(:), intent(inout), contiguous  dx 
)
private

Definition at line 3250 of file lalg_basic.F90.

◆ scal_6_3()

subroutine lalg_basic_oct_m::scal_6_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), intent(in)  da,
complex(real32), dimension(:, :), intent(inout), contiguous  dx 
)
private

Definition at line 3267 of file lalg_basic.F90.

◆ axpy_1_3()

subroutine lalg_basic_oct_m::axpy_1_3 ( integer, intent(in)  n1,
complex(real32), intent(in)  da,
complex(real32), dimension(:), intent(in), contiguous  dx,
complex(real32), dimension(:), intent(inout), contiguous  dy 
)
private

constant times a vector plus a vector

Definition at line 3298 of file lalg_basic.F90.

◆ axpy_2_3()

subroutine lalg_basic_oct_m::axpy_2_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real32), intent(in)  da,
complex(real32), dimension(:, :), intent(in), contiguous  dx,
complex(real32), dimension(:, :), intent(inout), contiguous  dy 
)
private

Definition at line 3327 of file lalg_basic.F90.

◆ axpy_3_3()

subroutine lalg_basic_oct_m::axpy_3_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real32), intent(in)  da,
complex(real32), dimension(:, :, :), intent(in), contiguous  dx,
complex(real32), dimension(:, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 3366 of file lalg_basic.F90.

◆ axpy_4_3()

subroutine lalg_basic_oct_m::axpy_4_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real32), intent(in)  da,
complex(real32), dimension(:, :, :, :), intent(in), contiguous  dx,
complex(real32), dimension(:, :, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 3398 of file lalg_basic.F90.

◆ axpy_5_3()

subroutine lalg_basic_oct_m::axpy_5_3 ( integer, intent(in)  n1,
real(real32), intent(in)  da,
complex(real32), dimension(:), intent(in), contiguous  dx,
complex(real32), dimension(:), intent(inout), contiguous  dy 
)
private

Definition at line 3433 of file lalg_basic.F90.

◆ axpy_6_3()

subroutine lalg_basic_oct_m::axpy_6_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
real(real32), intent(in)  da,
complex(real32), dimension(:, :), intent(in), contiguous  dx,
complex(real32), dimension(:, :), intent(inout), contiguous  dy 
)
private

Definition at line 3458 of file lalg_basic.F90.

◆ axpy_7_3()

subroutine lalg_basic_oct_m::axpy_7_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
real(real32), intent(in)  da,
complex(real32), dimension(:, :, :), intent(in), contiguous  dx,
complex(real32), dimension(:, :, :), intent(inout), contiguous  dy 
)
private

Definition at line 3494 of file lalg_basic.F90.

◆ copy_1_3()

subroutine lalg_basic_oct_m::copy_1_3 ( integer, intent(in)  n1,
complex(real32), dimension(:), intent(in), contiguous  dx,
complex(real32), dimension(:), intent(inout), contiguous  dy 
)
private

Copies a vector x, to a vector y

Definition at line 3527 of file lalg_basic.F90.

◆ copy_2_3()

subroutine lalg_basic_oct_m::copy_2_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real32), dimension(:,:), intent(in), contiguous  dx,
complex(real32), dimension(:,:), intent(inout), contiguous  dy 
)
private

Definition at line 3550 of file lalg_basic.F90.

◆ copy_3_3()

subroutine lalg_basic_oct_m::copy_3_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
complex(real32), dimension(:,:,:), intent(in), contiguous  dx,
complex(real32), dimension(:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 3581 of file lalg_basic.F90.

◆ copy_4_3()

subroutine lalg_basic_oct_m::copy_4_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  n3,
integer, intent(in)  n4,
complex(real32), dimension(:,:,:,:), intent(in), contiguous  dx,
complex(real32), dimension(:,:,:,:), intent(inout), contiguous  dy 
)
private

Definition at line 3606 of file lalg_basic.F90.

◆ nrm2_3()

real(real32) function lalg_basic_oct_m::nrm2_3 ( integer, intent(in)  n,
complex(real32), dimension(:), intent(in)  dx 
)
private

Returns the euclidean norm of a vector

Definition at line 3637 of file lalg_basic.F90.

◆ symv_1_3()

subroutine lalg_basic_oct_m::symv_1_3 ( integer, intent(in)  n,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :), intent(in), contiguous  a,
complex(real32), dimension(:), intent(in), contiguous  x,
complex(real32), intent(in)  beta,
complex(real32), dimension(:), intent(inout), contiguous  y 
)
private

BLAS level II

Matrix-vector multiplication plus vector.

Definition at line 3665 of file lalg_basic.F90.

◆ symv_2_3()

subroutine lalg_basic_oct_m::symv_2_3 ( integer, intent(in)  n1,
integer, intent(in)  n2,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :, :), intent(in), contiguous  a,
complex(real32), dimension(:), intent(in), contiguous  x,
complex(real32), intent(in)  beta,
complex(real32), dimension(:, :), intent(inout), contiguous  y 
)
private

Definition at line 3683 of file lalg_basic.F90.

◆ gemv_1_3()

subroutine lalg_basic_oct_m::gemv_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:,:), intent(in), contiguous  a,
complex(real32), dimension(:), intent(in), contiguous  x,
complex(real32), intent(in)  beta,
complex(real32), dimension(:), intent(inout), contiguous  y 
)
private

Definition at line 3705 of file lalg_basic.F90.

◆ gemv_2_3()

subroutine lalg_basic_oct_m::gemv_2_3 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:,:,:), intent(in), contiguous  a,
complex(real32), dimension(:), intent(in), contiguous  x,
complex(real32), intent(in)  beta,
complex(real32), dimension(:,:), intent(inout), contiguous  y 
)
private

Definition at line 3727 of file lalg_basic.F90.

◆ gemm_1_3()

subroutine lalg_basic_oct_m::gemm_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:,:), intent(in), contiguous  a,
complex(real32), dimension(:,:), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:,:), intent(inout), contiguous  c 
)
private

BLAS level III

Matrix-matrix multiplication plus matrix.

Definition at line 3760 of file lalg_basic.F90.

◆ gemm_2_3()

subroutine lalg_basic_oct_m::gemm_2_3 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :, :), intent(in), contiguous  a,
complex(real32), dimension(:, :), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:, :, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(m1, m2, k)
[in]bb(k, n)
[in,out]cc(m1, m2, n)

Definition at line 3781 of file lalg_basic.F90.

◆ gemm_cn_1_3()

subroutine lalg_basic_oct_m::gemm_cn_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:,:), intent(in), contiguous  a,
complex(real32), dimension(:,:), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as above but with (Hermitian) transpose of a. Note, in this also works when a and b are real.

Parameters
[in]aa(k, m)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 3807 of file lalg_basic.F90.

◆ gemm_cn_2_3()

subroutine lalg_basic_oct_m::gemm_cn_2_3 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :, :), intent(in), contiguous  a,
complex(real32), dimension(:, :, :), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 3828 of file lalg_basic.F90.

◆ gemm_nc_1_3()

subroutine lalg_basic_oct_m::gemm_nc_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:,:), intent(in), contiguous  a,
complex(real32), dimension(:,:), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:,:), intent(inout), contiguous  c 
)
private

The same as gemm but with (Hermitian) transpose of b. Note, in this also works when a and b are real.

Parameters
[in]aa(m, k)
[in]bb(k, n)
[in,out]cc(m, n)

Definition at line 3855 of file lalg_basic.F90.

◆ gemm_nc_2_3()

subroutine lalg_basic_oct_m::gemm_nc_2_3 ( integer, intent(in)  m1,
integer, intent(in)  m2,
integer, intent(in)  n1,
integer, intent(in)  n2,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :, :), intent(in), contiguous  a,
complex(real32), dimension(:, :, :), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:, :), intent(inout), contiguous  c 
)
private
Parameters
[in]aa(k, m2, m1)
[in]bb(k, n2, n1)
[in,out]cc(m1*m2, n1*n2)

Definition at line 3876 of file lalg_basic.F90.

◆ gemm_cc_1_3()

subroutine lalg_basic_oct_m::gemm_cc_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
integer, intent(in)  k,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:,:), intent(in), contiguous  a,
complex(real32), dimension(:,:), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:,:), intent(inout), contiguous  c 
)
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.

Parameters
[in]aa(k, m)
[in]bb(n, k)
[in,out]cc(m, n)

Definition at line 3914 of file lalg_basic.F90.

◆ symm_1_3()

subroutine lalg_basic_oct_m::symm_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  side,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :), intent(in), contiguous  a,
complex(real32), dimension(:, :), intent(in), contiguous  b,
complex(real32), intent(in)  beta,
complex(real32), dimension(:, :), intent(inout), contiguous  c 
)
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.

◆ trmm_1_3()

subroutine lalg_basic_oct_m::trmm_1_3 ( integer, intent(in)  m,
integer, intent(in)  n,
character(1), intent(in)  uplo,
character(1), intent(in)  transa,
character(1), intent(in)  side,
complex(real32), intent(in)  alpha,
complex(real32), dimension(:, :), intent(in), contiguous  a,
complex(real32), dimension(:, :), intent(inout), contiguous  b 
)
private

Matrix-matrix multiplication.

Definition at line 3971 of file lalg_basic.F90.