Trace of DBCSR matrices
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(in) | :: | matrix_a |
DBCSR matrices |
||
real(kind=real_8), | intent(inout) | :: | trace |
the trace of the product of the matrices |
SUBROUTINE dbcsr_trace_sd(matrix_a, trace) !! Trace of DBCSR matrices TYPE(dbcsr_type), INTENT(IN) :: matrix_a !! DBCSR matrices REAL(kind=real_8), INTENT(INOUT) :: trace !! the trace of the product of the matrices CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_trace_sd' INTEGER :: handle REAL(kind=real_4) :: trace_4 CALL timeset(routineN, handle) IF (dbcsr_get_data_type(matrix_a) .EQ. dbcsr_type_real_8) THEN CALL dbcsr_trace_d(matrix_a, trace) ELSEIF (dbcsr_get_data_type(matrix_a) .EQ. dbcsr_type_real_4) THEN trace_4 = 0.0_real_4 CALL dbcsr_trace_s(matrix_a, trace_4) trace = REAL(trace_4, real_8) ELSE DBCSR_ABORT("Invalid combination of data type, NYI") END IF CALL timestop(handle) END SUBROUTINE dbcsr_trace_sd