The return type seems somewhat orthogonal to the polyalgorithm point that 
you bring up. eig could still dispatch to special symmetric matrix methods 
internally, but always return Complex results.

On Tuesday, January 28, 2014 8:38:18 PM UTC-8, Jiahao Chen wrote:
>
> 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