TakagiFactorization.jl

Takagi factorization of complex symmetric matrices
Author JLTastet
Popularity
2 Stars
Updated Last
5 Years Ago
Started In
September 2018

TakagiFactorization.jl

Build Status codecov.io lifecycle

This package is a Julia translation of Thomas Hahn's Takagi factorization routine (http://www.feynarts.de/diag/).

Its main advantage (besides being written entirely in Julia) is that it can handle arbitrary precision arithmetics out of the box (e.g. using BigFloat).

All credit goes to the original author (except for bugs). If you use this package in your research, please cite:

If you find any bugs, please file an issue here. Bonus points if you check that the bug is absent from the original version :)

Example usage:

using TakagiFactorization
using LinearAlgebra

A₁ = convert(Matrix{Complex{Float64}}, [1.0 2.0; 2.0 1.0])
d₁, U₁ = takagi_factor(A₁, sort=-1)
@assert A₁  transpose(U₁) * d₁ * U₁
@assert d₁  Diagonal([3.0, 1.0])
@assert U₁  [1 1; -1im 1im] / 2

# Using arbitrary precision
Base.MPFR.setprecision(512)
A₂ = convert(Matrix{Complex{BigFloat}}, [0.0 1.0; 1.0 0.0])
d₂, U₂ = takagi_factor(A₂)
@assert A₂  transpose(U₂) * d₂ * U₂
@assert d₂  Diagonal([1.0, 1.0])
@assert U₂  [1 1; -1im 1im] / big(2)