[Numpy-discussion] why does eigvalsh return a complex array?

Christoph Groth cwg@falma...
Fri Apr 6 02:56:27 CDT 2012

I noticed that numpy.linalg.eigvalsh returns a complex array, even
though mathematically the resulting eigenvalues are guaranteed to be

Looking at the source code, the underlying zheevd routine of LAPACK
indeed returns an array of real numbers which is than converted to
complex in the numpy wrapper.

Does numpy policy require the type of the result to be the same as the
type of input?  Copying an array twice to arrive at the original result
seems pointless to me.

More information about the NumPy-Discussion mailing list