elpa_hermitian_multiply(3)
elpa_hermitian_multiply(3) β Library Functions Manual π¦
β¨ NAME β¨
elpa_hermitian_multiply β performs a "hermitian" multiplication of matrices: C = A^T * B for real matrices and C=A^H * B for complex matrices.
There are also variations of this routine that can accept not only host but also device pointers as input/output. Names of these routines explicitly contain the corresponding datatypes: elpa_hermitian_multiply_double, elpa_hermitian_multiply_float, elpa_hermitian_multiply_double_complex, elpa_hermitian_multiply_float_complex.
β¨ SYNOPSIS β¨
FORTRAN INTERFACE
use elpa
class(elpa_t), pointer :: elpa_handle
call elpa_handle%hermitian_multiply (uplo_a, uplo_c, ncb, a, b, nrows_b,
ncols_b, c, nrows_c, ncols_c, error)
With the definitions of the input and output variables:
class(elpa_t) :: elpa_handleβ an instance of the ELPA object, aka your main character handle πcharacter*1 :: uplo_aβ should be set to'U'ifAis upper triangular, to'L'ifAis lower triangular, or to anything else ifAis a full matrix.character*1 :: uplo_cβ should be set to'U'if only the upper diagonal part ofCis needed, to'L'if only the upper diagonal part ofCis needed, or to anything else if the full matrixCis needed. (yes bestie, the original says βupperβ for both here β I'm just passing the message along π«Ά)integer :: ncbβ the number of columns of the global matricesbandc.datatype :: aβ the matrixa. The dimensions of matrixamust be set BEFORE with the methodselpa_set(3)andelpa_setup(3). The datatype of the matrix can be one of"real(kind=c_double)","real(kind=c_float)","complex(kind=c_double)", or"complex(kind=c_float)".datatype :: bβ the matrixb. The dimensions of the matrix are specified by the parametersnrows_bandncols_b. The datatype of the matrix can be one of"real(kind=c_double)","real(kind=c_float)","complex(kind=c_double)", or"complex(kind=c_float)".integer :: nrows_bβ the number of rows of matrixb.integer :: ncols_bβ the number of columns of matrixb.datatype :: cβ the matrixc. The dimensions of the matrix are specified by the parametersnrows_candncols_c. The datatype of the matrix can be one of"real(kind=c_double)","real(kind=c_float)","complex(kind=c_double)", or"complex(kind=c_float)".integer :: nrows_cβ the number of rows of matrixc.integer :: ncols_cβ the number of columns of matrixc.integer, optional :: errorβ the return error code of the function. Should be"ELPA_OK". The error code can be queried with the functionelpa_strerr(3).
C/C++ INTERFACE
#include <elpa/elpa.h>
elpa_t elpa_handle;
void elpa_hermitian_multiply(elpa_t elpa_handle, char uplo_a, char
uplo_c, int ncb, datatype *a, datatype *b, int nrows_b, int ncols_b,
datatype *c, int nrows_c, int ncols_c, int *error);
With the definitions of the input and output variables:
elpa_t elpa_handle;β the handle to the ELPA object.char uplo_a;β should be set to'U'ifAis upper triangular, to'L'ifAis lower triangular, or anything else ifAis a full matrix.char uplo_c;β should be set to'U'if only the upper diagonal part ofCis needed, to'L'if only the upper diagonal part ofCis needed, or to anything else if the full matrixCis needed.int ncb;β the number of columns of the global matricesbandc.datatype *a;β the matrixa. The dimensions of matrixamust be set BEFORE with the methodselpa_set(3)andelpa_setup(3). The datatype can be one of"double","float","double complex"/"std::complex<double>","float complex"/"std::complex<float>"for C/C++.datatype *b;β the matrixb. The dimensions of the matrix are specified by the parametersnrows_bandncols_b. The datatype can be one of"double","float","double complex"/"std::complex<double>","float complex"/"std::complex<float>"for C/C++.int nrows_b;β the number of rows of matrixb.int ncols_b;β the number of columns of matrixb.datatype *c;β the matrixc. The dimensions of the matrix are specified by the parametersnrows_candncols_c. The datatype can be one of"double","float","double complex"/"std::complex<double>","float complex"/"std::complex<float>"for C/C++.int nrows_c;β the number of rows of matrixc.int ncols_c;β the number of columns of matrixc.int *error;β the return error code of the function. Should be"ELPA_OK". The error code can be queried with the functionelpa_strerr(3).
β¨ DESCRIPTION β¨
Performs a "hermitian" multiplication: C = A^T * B for real matrices and C=A^H * B for complex matrices.
β οΈ Real talk, bestie: the functionselpa_init(3),elpa_allocate(3),elpa_set(3), andelpa_setup(3)must be called BEFOREelpa_hermitian_multiplycan be called. No skipping the setup era, periodt.
β¨ SEE ALSO β¨
elpa2_print_kernels(1)elpa_init(3)elpa_allocate(3)elpa_set(3)elpa_setup(3)elpa_strerr(3)elpa_eigenvalues(3)elpa_eigenvectors(3)elpa_solve_tridiagonal(3)elpa_uninit(3)elpa_deallocate(3)
πΈ Source/version: ELPA Β· Date: Fri Apr 5 2024 Β· elpa_hermitian_multiply(3) β go multiply hermitian-ly, bestie! πβ¨
π¦ where this page comes from
- nixpkgs unstable: elpa 2026.02.002
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms