I'm looking for a sparse eigenvalue solver that returns just the number of eigenvalues starting from the lowest one that I specify rather than all of them between emin and emax. For example, I would like to be able to tell it to return the lowest 20 eigenvalues in the range from emin to emax that I specify even though there may be 1000 eigenvalues in that range.
I have looked at the Intel MKL Extended Eigensolver, however the problem for me is that I am dealing with large matrices of n>100000 that may have a huge number of eigenvalues between the range of emin to emax that I am interested in, and I will run out of memory if I try to dimension x (the array in which the eigenvectors are returned) big enough to hold them all. It also defeats the purpose of using a packed CSR array for a and b if x is considerably bigger than both of them.
If I specify m0=20, but there are 1000 eigenvalues between emin and emax, the documentation says that the routines return Info=3. It seems like it wouldn't be too hard a modification for the routines to just return the number of eigenvalues I specify in m0 rather than stopping and returning an error.
Does anyone know if if there is a good way of doing this?