elpa_hermitian_multiply - Man Page
Performs C = A**H * B
Synopsis
Fortran Interface
use elpa
class(elpa_t), pointer :: elpa
call elpa%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:
- character*1 :: uplo_a
set to 'U' if A is upper triangular, 'L' if A is lower triangular or anything else if A is a full matrix
- character*1 :: uplo_c
set to 'U' if only the upper diagonal part of C is needed, to 'L' if only the upper diagonal part of C is needed, or to anything else if the full matrix C is needed
- integer :: ncb
The number of columns of the global matrices b and c
- datatype :: a
The matrix a. The dimensions of matrix a must be set BEFORE with the methods elpa_set(3) and elpa_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 matrix b. The dimensions of the matrix are specified by the parametes nrows_b and ncols_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 matrix b
- integer :: ncols_b
The number of columns of matrix b
- datatype :: c
The matrix c. The dimensions of the matrix are specified by the parametes nrows_c and ncols_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 matrix c
- integer :: ncols_c
The number of columns of matrix c
- integer, optional :: error
The return error code of the function. Should be "ELPA_OK". The error code can be querried with the function elpa_strerr(3)
C Interface
#include <elpa/elpa.h>
elpa_t handle;
void elpa_hermitian_multiply(elpa_t 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 handle;
The handle to the ELPA object
- char uplo_a;
set to 'U' if A is upper triangular, 'L' if A is lower triangular or anything else if A is a full matrix
- char uplo_c;
set to 'U' if only the upper diagonal part of C is needed, to 'L' if only the upper diagonal part of C is needed, or to anything else if the full matrix C is needed
- int ncb;
The number of columns of the global matrices b and c
- datatype *a;
The matrix a. The dimensions of matrix a must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype of the matrix can be one of "double", "float", "double complex", or "float complex"
- datatype *b;
The matrix b. The dimensions of the matrix are specified by the parametes nrows_b and ncols_b. The datatype of the matrix can be one of "double", "float", "double complex", or "float complex"
- int nrows_b;
The number of rows of matrix b
- int ncols_b;
The number of columns of matrix b
- datatype *c;
The matrix c. The dimensions of the matrix are specified by the parametes nrows_c and ncols_c. The datatype of the matrix can be one of "double", "float", "double complex", or "float complex"
- int nrows_c;
The number of rows of matrix c
- int ncols_c;
The number of columns of matrix c
- int *error
The return error code of the function. Should be "ELPA_OK". The error code can be querried with the function elpa_strerr(3)
Description
Performa a "hermitian" multiplication C = A**T * B for real matrices and C=A**H * B for complex matrices. The functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_hermitian_multiply can be called.
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)
Referenced By
elpa2_print_kernels(1), elpa_allocate(3), elpa_cholesky(3), elpa_deallocate(3), elpa_eigenvectors(3), elpa_eigenvectors_double(3), elpa_eigenvectors_double_complex(3), elpa_eigenvectors_float(3), elpa_eigenvectors_float_complex(3), elpa_generalized_eigenvalues(3), elpa_generalized_eigenvectors(3), elpa_init(3), elpa_invert_triangular(3), elpa_set(3), elpa_setup(3), elpa_skew_eigenvectors(3), elpa_solve_tridiagonal(3), elpa_uninit(3).