Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix_a | |||
type(dbcsr_type), | intent(in) | :: | matrix_b | |||
complex(kind=real_8), | intent(in) | :: | alpha_scalar | |||
complex(kind=real_8), | intent(in) | :: | beta_scalar |
SUBROUTINE dbcsr_add_z(matrix_a, matrix_b, alpha_scalar, beta_scalar) TYPE(dbcsr_type), INTENT(INOUT) :: matrix_a TYPE(dbcsr_type), INTENT(IN) :: matrix_b COMPLEX(real_8), INTENT(IN) :: alpha_scalar, beta_scalar CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_add_z' INTEGER :: handle CALL timeset(routineN, handle) IF (dbcsr_get_data_type(matrix_a) .EQ. dbcsr_type_complex_8 .AND. & dbcsr_get_data_type(matrix_b) .EQ. dbcsr_type_complex_8) THEN CALL dbcsr_add_anytype(matrix_a, matrix_b, & alpha_scalar=dbcsr_scalar(alpha_scalar), & beta_scalar=dbcsr_scalar(beta_scalar)) ELSEIF (dbcsr_get_data_type(matrix_a) .EQ. dbcsr_type_complex_4 .AND. & dbcsr_get_data_type(matrix_b) .EQ. dbcsr_type_complex_4) THEN CALL dbcsr_add_anytype(matrix_a, matrix_b, & alpha_scalar=dbcsr_scalar(CMPLX(alpha_scalar, KIND=real_4)), & beta_scalar=dbcsr_scalar(CMPLX(beta_scalar, KIND=real_4))) ELSE DBCSR_ABORT("Invalid combination of data type, NYI") END IF CALL timestop(handle) END SUBROUTINE dbcsr_add_z