handle_posv_info Subroutine

public elemental subroutine handle_posv_info(this, info, triangle, n, nrhs, lda, ldb, err)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: this
integer(kind=ilp), intent(in) :: info
character(len=1), intent(in) :: triangle
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: nrhs
integer(kind=ilp), intent(in) :: lda
integer(kind=ilp), intent(in) :: ldb
type(linalg_state_type), intent(out) :: err

Source Code

   elemental subroutine handle_posv_info(this,info,triangle,n,nrhs,lda,ldb,err)
      character(len=*), intent(in) :: this
      character, intent(in) :: triangle
      integer(ilp), intent(in) :: info,n,nrhs,lda,ldb
      type(linalg_state_type), intent(out) :: err

      ! Process output
      select case (info)
      case (0)
         err%state = LINALG_SUCCESS
      case (-1)
         err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'invalid triangle selection: ', &
                  triangle,'. should be U/L')
      case (-2)
         err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size n=',n)
      case (-3)
         err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid rhs size nrhs=',nrhs)
      case (-5)
         err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid lda=',lda,': should be >=',n)
      case (-7)
         err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid ldb=',ldb,': should be >=',n)
      case (1:)
         err = linalg_state_type(this,LINALG_ERROR,'matrix is not positive definite: ', &
               'leading minor of order',info,' is not positive definite')
      case default
         err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
      end select

   end subroutine handle_posv_info