eig_rel Subroutine

private pure subroutine eig_rel(matrix, eig_vecr, eig_val, eig_vecl, method)

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in), dimension(:,:) :: matrix
real(kind=rk), intent(out), dimension(:,:), allocatable :: eig_vecr
real(kind=rk), intent(out), dimension(:), allocatable :: eig_val
real(kind=rk), intent(out), optional, dimension(:,:), allocatable :: eig_vecl
character(len=*), intent(in), optional :: method

Calls

proc~~eig_rel~~CallsGraph proc~eig_rel foreig::eig_rel proc~dgeev_rel foreig::dgeev_rel proc~eig_rel->proc~dgeev_rel proc~dggev_rel foreig::dggev_rel proc~eig_rel->proc~dggev_rel proc~dsyev_rel foreig::dsyev_rel proc~eig_rel->proc~dsyev_rel

Called by

proc~~eig_rel~~CalledByGraph proc~eig_rel foreig::eig_rel interface~eig foreig::eig interface~eig->proc~eig_rel program~benchmark benchmark program~benchmark->interface~eig program~test1 test1 program~test1->interface~eig

Source Code

   pure subroutine eig_rel(matrix, eig_vecr, eig_val, eig_vecl, method)
      real(rk), dimension(:,:),              intent(in)            :: matrix
      character(*),                          intent(in), optional  :: method
      real(rk), dimension(:,:), allocatable, intent(out)           :: eig_vecr
      real(rk), dimension(:,:), allocatable, intent(out), optional :: eig_vecl
      real(rk), dimension(:),   allocatable, intent(out)           :: eig_val

      if (.not. present(method)) then
         call dgeev_rel(matrix, eig_vecr, eig_val)
      else

         select case (method)
          case ('syev')
            call dsyev_rel(matrix, eig_vecr, eig_val)
          case ('geev')
            call dgeev_rel(matrix, eig_vecr, eig_val, eig_vecl)
          case ('ggev')
            call dggev_rel(matrix, eig_vecr, eig_val, eig_vecl)
         end select

      end if

   end subroutine eig_rel