|
subroutine, public | cp_fm_basic_linalg::cp_fm_det (matrix_a, det_a) |
| Computes the determinant (with a correct sign even in parallel environment!) of a real square matrix.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_scale_and_add (alpha, matrix_a, beta, matrix_b) |
| calc A <- alpha*A + beta*B optimized for alpha == 1.0 (just add beta*B) and beta == 0.0 (just scale A)
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_geadd (alpha, trans, matrix_a, beta, matrix_b) |
| interface to BLACS geadd: matrix_b = beta*matrix_b + alpha*opt(matrix_a) where opt(matrix_a) can be either: 'N': matrix_a 'T': matrix_a^T 'C': matrix_a^H (Hermitian conjugate) note that this is a level three routine, use cp_fm_scale_and_add if that is sufficient for your needs
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_gemm (transa, transb, m, n, k, alpha, matrix_a, matrix_b, beta, matrix_c, a_first_col, a_first_row, b_first_col, b_first_row, c_first_col, c_first_row) |
| computes matrix_c = beta * matrix_c + alpha * ( matrix_a ** transa ) * ( matrix_b ** transb )
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_symm (side, uplo, m, n, alpha, matrix_a, matrix_b, beta, matrix_c) |
| computes matrix_c = beta * matrix_c + alpha * matrix_a * matrix_b computes matrix_c = beta * matrix_c + alpha * matrix_b * matrix_a where matrix_a is symmetric
|
|
real(kind=dp) function, public | cp_fm_basic_linalg::cp_fm_frobenius_norm (matrix_a) |
| computes the Frobenius norm of matrix_a
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_syrk (uplo, trans, k, alpha, matrix_a, ia, ja, beta, matrix_c) |
| performs a rank-k update of a symmetric matrix_c matrix_c = beta * matrix_c + alpha * matrix_a * transpose ( matrix_a )
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_schur_product (matrix_a, matrix_b, matrix_c) |
| computes the schur product of two matrices c_ij = a_ij * b_ij
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_triangular_multiply (triangular_matrix, matrix_b, side, transpose_tr, invert_tr, uplo_tr, unit_diag_tr, n_rows, n_cols, alpha) |
| multiplies in place by a triangular matrix: matrix_b = alpha op(triangular_matrix) matrix_b or (if side='R') matrix_b = alpha matrix_b op(triangular_matrix) op(triangular_matrix) is: triangular_matrix (if transpose_tr=.false. and invert_tr=.false.) triangular_matrix^T (if transpose_tr=.true. and invert_tr=.false.) triangular_matrix^(-1) (if transpose_tr=.false. and invert_tr=.true.) triangular_matrix^(-T) (if transpose_tr=.true. and invert_tr=.true.)
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_scale (alpha, matrix_a) |
| scales a matrix matrix_a = alpha * matrix_b
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_transpose (matrix, matrixt) |
| transposes a matrix matrixt = matrix ^ T
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_uplo_to_full (matrix, work, uplo) |
| given a triangular matrix according to uplo, computes the corresponding full matrix
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_column_scale (matrixa, scaling) |
| scales column i of matrix a with scaling(i)
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_row_scale (matrixa, scaling) |
| scales row i of matrix a with scaling(i)
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_invert (matrix_a, matrix_inverse, det_a, eps_svd, eigval) |
| Inverts a cp_fm_type matrix, optionally returning the determinant of the input matrix.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_triangular_invert (matrix_a, uplo_tr) |
| inverts a triangular matrix
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_qr_factorization (matrix_a, matrix_r, nrow_fact, ncol_fact, first_row, first_col, uplo) |
| performs a QR factorization of the input rectangular matrix A or of a submatrix of A the computed triangular matrix R is in output of the submatrix sub(A) of size NxN M and M give the dimension of the submatrix that has to be factorized (MxN) with M>N
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_solve (matrix_a, general_a) |
| computes the the solution to A*b=A_general using lu decomposition
|
|
subroutine, public | cp_fm_basic_linalg::cp_complex_fm_gemm (transa, transb, m, n, k, alpha, a_re, a_im, b_re, b_im, beta, c_re, c_im, a_first_col, a_first_row, b_first_col, b_first_row, c_first_col, c_first_row) |
| Convenience function. Computes the matrix multiplications needed for the multiplication of complex matrices. C = beta * C + alpha * ( A ** transa ) * ( B ** transb )
|
|
real(kind=dp) function, public | cp_fm_basic_linalg::cp_fm_norm (matrix, mode) |
| norm of matrix using (p)dlange
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_pdgeqpf (matrix, tau, nrow, ncol, first_row, first_col) |
| compute a QR factorization with column pivoting of a M-by-N distributed matrix sub( A ) = A(IA:IA+M-1,JA:JA+N-1)
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_pdorgqr (matrix, tau, nrow, first_row, first_col) |
| generates an M-by-N real distributed matrix Q denoting A(IA:IA+M-1,JA:JA+N-1) with orthonormal columns, which is defined as the first N columns of a product of K elementary reflectors of order M
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_rot_rows (matrix, irow, jrow, cs, sn) |
| Applies a planar rotation defined by cs and sn to the i'th and j'th rows.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_rot_cols (matrix, icol, jcol, cs, sn) |
| Applies a planar rotation defined by cs and sn to the i'th and j'th columnns.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_gram_schmidt_orthonorm (matrix_a, b, nrows, ncols, start_row, start_col, do_norm, do_print) |
| Orthonormalizes selected rows and columns of a full matrix, matrix_a.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_potrf (fm_matrix, n, uplo) |
| Cholesky decomposition.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_potri (fm_matrix, n, uplo) |
| Invert trianguar matrix.
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_cholesky_restore (fm_matrix, neig, fm_matrixb, fm_matrixout, op, pos, transa) |
| ...
|
|
subroutine, public | cp_fm_basic_linalg::cp_fm_matvec (amat, xv, yv, alpha, beta) |
| Calculates yv = alpha*amat*xv + beta*yv where amat: fm matrix xv : vector replicated yv : vector replicated Defaults: alpha = 1, beta = 0.
|
|