This file defines functions that perform some common matrix operations.
Constructs an n×n identity matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n | Matrix dimension |
Identity matrix [n×n]
Wrapper for matrix_inverse_cx that allows the procedure to be used for real matrices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(:,:) | :: | A | Matrix A [n×n] |
Matrix R=A¯¹
Invert a square n×n matrix using Gauss-Jordan elimination with partial pivoting. In the special case n=2, the inverse is evaluated using a cofactoring algorithm. [This implementation is based on Algorithm #2 in "Efficient matrix inversion via Gauss-Jordan elimination and its parallelization" by E.S. Quintana et al. (1998)]
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | A | Matrix A [n×n] |
Matrix R=A¯¹
Calculate the trace of a general complex matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | A | Matrix [n×m] |
r = Tr(A)
Calculate the commutator between two complex square matrices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | A | Left matrix [n×n] |
|
complex(kind=wp), | intent(in), | dimension(size(A,1),size(A,1)) | :: | B | Right matrix [n×n] |
Commutator R = [A,B]
Calculate the anticommutator between two complex square matrices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | A | Left matrix [n×n] |
|
complex(kind=wp), | intent(in), | dimension(size(A,1),size(A,1)) | :: | B | Right matrix [n×n] |
Anticommutator R = {A,B}
Extract the diagonal of a general complex matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | A | Matrix [n×m] |
r = Diag(A)
Construct a block-diagonal matrix R from two general matrices A and B.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | A | Left matrix [n×m] |
|
complex(kind=wp), | intent(in), | dimension(:,:) | :: | B | Right matrix [p×q] |
R = Diag(A,B)