(S|D)SYEV
=========
Single and double SYEV.

Description
-----------
Computes the eigenvalues and (optionally) eigenvectors of a symmetric matrix.

Right eigenvectors satisfy:

.. math::

    \fvar{A} \mult v_i = \lambda_i v_i

Left eigenvectors satisfy:

.. math::

    \trans{u_i} \mult \fvar{A} = \lambda \trans{u_i}

Computed eigenvectors are normalized.

LAPACK Interface
----------------
.. code-block:: c

    void ssyev(const char *JOBZ, const char *UPLO, const qml_long *N, float *A,
        const qml_long *LDA, float *W, float *WORK, const qml_long *LWORK,
        qml_long *INFO);
    
    void dsyev(const char *JOBZ, const char *UPLO, const qml_long *N, double *A,
        const qml_long *LDA, double *W, double *WORK, const qml_long *LWORK,
        qml_long *INFO);


Arguments
---------
======   =====================================================================
JOBZ     Compute eigenvectors and store in A if 'V', otherwise do not compute
UPLO     Specify whether to use 'U' upper triangular or 'L' lower triangular part of A
N        Number of rows and columns of A
A        Matrix of size N x N, overwritten on exit
LDA      Leading dimension of A
W        Array of size N containing eigenvalues on exit
WORK     Work space of size at least LWORK
LWORK    Size of work space (-1 to query)
INFO     0 on success
======   =====================================================================
