The reason is primarily for performance and secondarily for numerical
stability. eig() on a Matrix implements a polyalgorithm depending on
the symmetries of the input matrix. Certain symmetries, e.g. real
symmetric or Hermitian, can be solve significantly more efficiently
than the general case, and so eig() attempts to detect these
symmetries at runtime and if found, dispatch to different LAPACK
routines that are able to take advantage of faster and more stable
algorithms. Several other generic linear algebraic functions are
written in this fashion, notably \.

(This was recently discussed in the context of issue #4006 with
particular focus on sqrtm, whose code is somewhat easier to read than
eigfact!. https://github.com/JuliaLang/julia/issues/4006)

Thanks,

Jiahao Chen, PhD
Staff Research Scientist
MIT Computer Science and Artificial Intelligence Laboratory

Reply via email to