Process GEEV output flags
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | this | |||
type(linalg_state_type), | intent(inout) | :: | err |
Error handler |
||
integer(kind=ilp), | intent(in) | :: | info |
GEEV return flag |
||
integer(kind=ilp), | intent(in) | :: | shapea(2) |
Input matrix size |
pure subroutine handle_geev_info(this,err,info,shapea) character(len=*), intent(in) :: this !> Error handler type(linalg_state_type), intent(inout) :: err !> GEEV return flag integer(ilp), intent(in) :: info !> Input matrix size integer(ilp), intent(in) :: shapea(2) select case (info) case (0) ! Success! err%state = LINALG_SUCCESS case (-1) err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'Invalid task ID: left eigenvectors.') case (-2) err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'Invalid task ID: right eigenvectors.') case (-5,-3) err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size: a=',shapea) case (-9) err = linalg_state_type(this,LINALG_VALUE_ERROR,'insufficient left vector matrix size.') case (-11) err = linalg_state_type(this,LINALG_VALUE_ERROR,'insufficient right vector matrix size.') case (-13) err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'Insufficient work array size.') case (1:) err = linalg_state_type(this,LINALG_ERROR,'Eigenvalue computation did not converge.') case default err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'Unknown error returned by geev.') end select end subroutine handle_geev_info