Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
elpa_hermitian_multiply(3)  Library Functions Manual  elpa_hermitian_multiply(3)

NAME
     elpa_hermitian_multiply  -  performs a "hermitian" multiplication of matri-
     ces: 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.

     character*1   :: uplo_a
	    Should be set to 'U' if A is upper triangular, to 'L' if A is  lower
	    triangular or to anything else if A is a full matrix.

     character*1   :: uplo_c
	    Should be 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 any-
	    thing 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)", "com-
	    plex(kind=c_double)", or "complex(kind=c_float)".

     datatype	   :: b
	    The matrix b. The dimensions of the matrix are specified by the  pa-
	    rameters  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_dou-
	    ble)", 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  pa-
	    rameters  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_dou-
	    ble)", 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  er-
	    ror code can be queried with the function elpa_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' if A is upper triangular, to 'L' if A is lower
	    triangular or anything else if A is a full matrix.

     char  uplo_c;
	    Should be 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  any-
	    thing 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 can be one of
	    "double", "float", "double	complex"/"std::complex<double>",  "float
	    complex"/"std::complex<float>" for C/C++.

     datatype  *b;
	    The  matrix b. The dimensions of the matrix are specified by the pa-
	    rameters nrows_b and ncols_b. The datatype can be one  of  "double",
	    "float",   "double	 complex"/"std::complex<double>",   "float  com-
	    plex"/"std::complex<float>" for C/C++.

     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  pa-
	    rametersn  rows_c  and ncols_c. The datatype can be one of "double",
	    "float",  "double	complex"/"std::complex<double>",   "float   com-
	    plex"/"std::complex<float>" for C/C++.

     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 er-
	    ror code can be queried with the function elpa_strerr(3)

DESCRIPTION
     Performs a "hermitian" multiplication: C = A^T * B for  real  matrices  and
     C=A^H  *  B  for  complex	matrices. The functions elpa_init(3), elpa_allo-
     cate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE  elpa_hermit-
     ian_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)

ELPA				 Fri Apr 5 2024       elpa_hermitian_multiply(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=elpa_hermitian_multiply&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help