(git:ccc2433)
cp_fm_basic_linalg.F File Reference

Go to the source code of this file.

Modules

module  cp_fm_basic_linalg
 basic linear algebra operations for full matrices
 

Functions/Subroutines

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. More...
 
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) More...
 
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 More...
 
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 ) More...
 
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 More...
 
real(kind=dp) function, public cp_fm_basic_linalg::cp_fm_frobenius_norm (matrix_a)
 computes the Frobenius norm of matrix_a More...
 
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 ) More...
 
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 More...
 
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.) More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_scale (alpha, matrix_a)
 scales a matrix matrix_a = alpha * matrix_b More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_transpose (matrix, matrixt)
 transposes a matrix matrixt = matrix ^ T More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_upper_to_full (matrix, work)
 given an upper triangular matrix computes the corresponding full matrix More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_column_scale (matrixa, scaling)
 scales column i of matrix a with scaling(i) More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_row_scale (matrixa, scaling)
 scales row i of matrix a with scaling(i) More...
 
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. More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_triangular_invert (matrix_a, uplo_tr)
 inverts a triangular matrix More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_qr_factorization (matrix_a, matrix_r, nrow_fact, ncol_fact, first_row, first_col)
 performs a QR factorization of the input rectangular matrix A or of a submatrix of A the computed upper triangular matrix R is in output in 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 More...
 
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 pay attention, both matrices are overwritten, a_general contais the result More...
 
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 ) More...
 
real(kind=dp) function, public cp_fm_basic_linalg::cp_fm_norm (matrix, mode)
 norm of matrix using (p)dlange More...
 
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) More...
 
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 More...
 
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. More...
 
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. More...
 
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. More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_potrf (fm_matrix, n)
 Cholesky decomposition. More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_potri (fm_matrix, n)
 Invert trianguar matrix. More...
 
subroutine, public cp_fm_basic_linalg::cp_fm_cholesky_restore (fm_matrix, neig, fm_matrixb, fm_matrixout, op, pos, transa)
 ... More...