I am working on a project where it is important to distinguish between 0 eigenvalues and non zero eigenvalues. Using the MKL routine LAPACKE_zheev returns me a list of eigenvalues which include some very close to zero. I was wondering what the precision on those is or rather whether they can be reliably distinguished from a zero eigenvalue by the algorithm.
The only thing I have found on this topic so far is an article in the LAPACK specifications on Error bounds:
Does this article apply to the MKL routines aswell? I.e. is an eigenvalue larger than EERRBD guaranteed to belong to a non zero true eigenvalue? Is there a MKL routine that can be called to get the errorbound?
If anyone has information on this thanks in advance.
The precision on the returned eigenvalues from LAPACKE_zheev is "double precision".
The error bounds of the results depend on both machine epsilon and the input matrix. There is a code sample right on the netlib page that you referenced showing exactly how to compute the error bounds.