zheev support added



Per feature request #108
(https://sourceforge.net/p/maxima/feature-requests/108/), I've checked
in a very simple interface to zheev. No documentation yet, but
basically

zheev(a, [eigv])

Returns a list whose first element is the set of eigenvalues. The
optional second element, if the optional arg eigv is true (defaults to
false), is the matrix of the eigenvectors in the same order as the
eigenvalues.

No check is made that the matrix a is Hermitian.

A quick example:

(%i1) load(lapack)$
(%i2) a:matrix([1,2-%i,3-%i],[2+%i,2,3-2*%i],[3+%i, 3+2*%i, 3])$
(%i3) zheev(a,true);
(%o3) [[-2.2690468530751,.2189865253339372,8.050060327741164],
       matrix([0.18010052304614*%i+.5808120959685468,
               -.6223772444833705*%i-.1601609420258634,
               0.401554125978799-.2365807111393672*%i],
              [.1851249200484407-.4971211684012828*%i,
               .3055281452207694*%i+.5553541199068338,
               .5103263638985529-.2374882401192676*%i],
              [-.5906102087498429,-.4303828437323424,.6826054417753562])]
(%i4) zgeev(a,true);
(%o4) [[8.050060327741164-7.563939162650241e-16*%i,
        6.453501310830172e-16*%i+.2189865253339366,
        -3.052898490524264e-16*%i-2.2690468530751],
       matrix([.4015541259787987-.2365807111393671*%i,.6426546209289447,
               .6080944739305474],
              [.5103263638985526-.2374882401192676*%i,
               .4616882562475726*%i-.4342920676947863,
               .02958588040880672-0.529646455454989*%i],
              [.6826054417753563,.1072590462110182-.4168031779929709*%i,
               .1749221742218715*%i-0.56411226865317]),false]

Hard to see, but zgeev has the same eigenvalues but a different
order. The eigenvectors look different, but I'm assuming it's just a
scaling.

Ray