handle_ggev_info Subroutine

public pure subroutine handle_ggev_info(this, err, info, shapea, shapeb)

Process GGEV output flags

Arguments

Type IntentOptional 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

integer(kind=ilp), intent(in) :: shapeb(2)

Input matrix size


Source Code

     pure subroutine handle_ggev_info(this,err,info,shapea,shapeb)
        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),shapeb(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 (-7)
               err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size: b=',shapeb)               
           case (-12)
               err = linalg_state_type(this,LINALG_VALUE_ERROR,'insufficient left vector matrix size.')
           case (-14)
               err = linalg_state_type(this,LINALG_VALUE_ERROR,'insufficient right vector matrix size.')
           case (-16)
               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 ggev.')
        end select

     end subroutine handle_ggev_info