This site hosts a set of routines for the eigenvalue decomposition, singular value decomposition, and Takagi factorization of a complex matrix. Unlike many other implementations, the current ones are all based on the Jacobi algorithm, which makes the code very compact but suitable only for small to medium-sized problems.

Although distributed as a library, the routines are self-contained and can easily be taken out of the library and included in own code, removing yet another installation prerequisite. Owing to the small size of the routines it is possible, in fact quite straightforward, to adapt the diagonalization routine to one's own conventions rather than vice versa.

The following routines are included:

- HEigensystem.F ⋅ HEigensystem.c diagonalize a Hermitian matrix,
- SEigensystem.F ⋅ SEigensystem.c diagonalize a complex symmetric matrix,
- CEigensystem.F ⋅ CEigensystem.c diagonalize a general complex matrix,
- TakagiFactor.F ⋅ TakagiFactor.c perform a Takagi factorization,
- SVD.F ⋅ SVD.c perform a singular value decomposition,
- diag-f.h ⋅ diag-c.h declare global constants.

The routines have been published in physics/0607103.

Downloads (hover over download link for MD5):

- Diag-1.5.tar.gz [126 kB] of 3 Nov 2015
- fixed problem with static compile on MacOS.

- Diag-1.4.tar.gz [121 kB] of 9 Aug 2011
- Diag-1.3.tar.gz [113 kB] of 6 Jun 2011
- Diag-1.2.tar.gz [110 kB] of 17 Feb 2010
- Diag-1.1.tar.gz [99 kB] of 26 Jan 2007
- Diag-1.0.tar.gz [72 kB] of 11 Jul 2006

To install the package:

- unpack the
`Diag-`archive,*n*.*m*.tar.gz - change into the
`Diag-`directory,*n*.*m* - run "
`./configure`", - run "
`make`", - run "
`make install`".

A PDF file with the manual is contained in the distribution. It can also be downloaded directly: manual.pdf [117 kB].

Thanks for looking in.

Please send bug reports, suggestions, fan mail, etc. to Thomas Hahn, hahn@feynarts.de.

This site and the programs offered here are not commercial. The Diag
package is and will stay an open-source package and free of charge.

If you want to use these routines in a commercial application, make sure
you understand the GNU
Lesser General Public License under which Diag is distributed.

Diag is being developed at the
Max Planck Institute for Physics
in Munich.

Data protection statement and Imprint

Last update: 28 May 18 Thomas Hahn