66submodule (stdlib_linalg) stdlib_linalg_eigenvalues
77!! Compute eigenvalues and eigenvectors
88 use stdlib_linalg_constants
9- use stdlib_linalg_lapack, only: geev, heev, syev
9+ use stdlib_linalg_lapack, only: geev, ggev, heev, syev
1010 use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
1111 LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR, LINALG_SUCCESS
1212 implicit none(type,external)
@@ -29,13 +29,13 @@ submodule (stdlib_linalg) stdlib_linalg_eigenvalues
2929 end function symmetric_triangle_task
3030
3131 !> Process GEEV output flags
32- elemental subroutine handle_geev_info(err,info,m,n )
32+ pure subroutine handle_geev_info(err,info,shapea )
3333 !> Error handler
3434 type(linalg_state_type), intent(inout) :: err
3535 !> GEEV return flag
3636 integer(ilp), intent(in) :: info
3737 !> Input matrix size
38- integer(ilp), intent(in) :: m,n
38+ integer(ilp), intent(in) :: shapea(2)
3939
4040 select case (info)
4141 case (0)
@@ -46,7 +46,7 @@ submodule (stdlib_linalg) stdlib_linalg_eigenvalues
4646 case (-2)
4747 err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'Invalid task ID: right eigenvectors.')
4848 case (-5,-3)
49- err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size: a=',[m,n] )
49+ err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size: a=',shapea )
5050 case (-9)
5151 err = linalg_state_type(this,LINALG_VALUE_ERROR,'insufficient left vector matrix size.')
5252 case (-11)
@@ -322,7 +322,7 @@ submodule (stdlib_linalg) stdlib_linalg_eigenvalues
322322 #{if rt.startswith('complex')}#lambda,#{else}#lreal,limag,#{endif}# &
323323 umat,ldu,vmat,ldv,&
324324 work_dummy,lwork,#{if rt.startswith('complex')}#rwork,#{endif}#info)
325- call handle_geev_info (err0,info,m,n)
325+ call handle_${ei}$_info (err0,info,[ m,n]#{if ei=='ggev'}#,shape(bmat)#{endif}# )
326326
327327 ! Compute eigenvalues
328328 if (info==0) then
@@ -336,7 +336,7 @@ submodule (stdlib_linalg) stdlib_linalg_eigenvalues
336336 #{if rt.startswith('complex')}#lambda,#{else}#lreal,limag,#{endif}# &
337337 umat,ldu,vmat,ldv,&
338338 work,lwork,#{if rt.startswith('complex')}#rwork,#{endif}#info)
339- call handle_geev_info (err0,info,m,n)
339+ call handle_${ei}$_info (err0,info,[ m,n]#{if ei=='ggev'}#,shape(bmat)#{endif}# )
340340
341341 endif
342342
0 commit comments