LAPACKE_?geev_work requires ldvl and ldvr to be at least n always:
if( ldvl < n ) {
info = -10;
LAPACKE_xerbla( "LAPACKE_dgeev_work", info );
return info;
}
if( ldvr < n ) {
info = -12;
LAPACKE_xerbla( "LAPACKE_dgeev_work", info );
return info;
}
This is in contrast to the Fortran code that requires it only if the corresponding eigenvectors are computed:
ELSE IF( LDVL.LT.1 .OR. ( WANTVL .AND. LDVL.LT.N ) ) THEN
INFO = -9
ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN
INFO = -11
END IF