I am currently working on a project that involves high-precision computations on real symmetric matrices. Specifically, I need to compute all eigenvalues and, optionally, eigenvectors of these matrices using a quad precision routine.

`LAPACK`

library provides the `DSYEVD`

routine, which computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix `A`

. However, my computations require quad precision. I have explored the documentation but have not found a direct reference to a quad precision equivalent of `DSYEVD`

.

- Is there a quad precision version of the
`DSYEVD`

routine available in the Julia `LinearAlgebra.LAPACK`

library?
- If it is not directly available, what would be the recommended approach to achieve quad precision eigenvalue computations in Julia?
- Are there any external packages or libraries compatible with Julia that provide such functionality?

1 Like

The GenericLinearAlgebra.jl and GenericSchur.jl packages provide eigensystem methods which will work with `Float128`

from Quadmath.jl (or `BigFloat`

for even finer precision). They implement straight-forward QR approaches rather than the divide-and-conquer (DC) scheme in DSYEVD, but the advantages of DC are questionable for non-BLAS types.

4 Likes

I attempted to use the `GenericLinearAlgebra.LAPACK2.syevd!`

routine, but it does not accept `Matrix{Float128}`

or `Symmetric{Float128, Matrix{Float128}}`

as input.

Here’s a minimal example of what I tried:

```
using Random, Quadmath, LinearAlgebra, GenericLinearAlgebra
Random.seed!(123)
A = randn(Float128, 4, 4)
A = Symmetric(A)
GenericLinearAlgebra.LAPACK2.syevd!('N', 'U', A)
```

This results is an error indicating that `syevd!`

does not support Symmetric `Matrix{Float128}`

types.

What I need is a routine that can handle matrices of type `Symmetric{Float128, Matrix{Float128}}`

and compute their eigenvalues with 128-bit or more precision.

`GenericLinearAlgebra`

provides `eigen, eigvals`

etc. for `Hermitian`

, but not `Symmetric`

. `GenericSchur`

provides them for both.

3 Likes