# \`eigen\` does not support keyword argumwnt \`permute\` for BigFloat matrix

**URL:** <https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798>\
**Category:** General Usage\
**Tags:** question, linearalgebra\
**Created:** [September 12, 2023, 11:53pm UTC](https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798 "2023-09-12T23:53:11Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![frankwswang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/frankwswang/32/18561_2.png) [@frankwswang](https://discourse.julialang.org/u/frankwswang)\
**Post date:** [September 12, 2023, 11:53pm UTC](https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798/1 "2023-09-12T23:53:11Z")

</div>

MWE:

```julia
julia> using LinearAlgebra

julia> m = rand(3,3) .|> big |> Hermitian;

julia> using GenericLinearAlgebra

julia> eigen(m);

julia> eigen(m, permute=false);
ERROR: MethodError: no method matching eigen(::Hermitian{BigFloat, Matrix{BigFloat}}; permute::Bool)

```

Is this a missed support or intentional?

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [September 13, 2023, 1:15am UTC](https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798/2 "2023-09-13T01:15:34Z")

</div>

I think it’s intentional, the docstring says the parameters `permute` and `scale` are relevant to “general nonsymmetric matrices”, but Hermitian matrices have symmetry. Note that you’d get the same `MethodError` with `Float64` elements, try omitting the `.|> big` text.

---

<div class="post-metadata">

**Author:** ![frankwswang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/frankwswang/32/18561_2.png) [@frankwswang](https://discourse.julialang.org/u/frankwswang)\
**Post date:** [September 13, 2023, 1:43am UTC](https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798/3 "2023-09-13T01:43:38Z")

</div>

Thanks for the reply! Actually, I can remove `Hermitian` but have to keep `big` because I’m trying to compute the eigenvalues of a nearly symmetric matrix with arbitrary precision. But it seems that even when `using GenericLinearAlgebra`, `eigen` does not support `Matrix{BigFloat}`:

```julia
julia> n = rand(3,3) .|> big;

julia> eigen(m);
ERROR: MethodError: no method matching eigen!(::Matrix{BigFloat}; permute::Bool, scale::Bool, sortby::typeof(LinearAlgebra.eigsortby))

```

That’s why I added `|>Hermitian`. But now it does not support `permute` again… Do you know if there’s a workaround to this? Thanks!

---

<div class="post-metadata">

**Author:** ![macd](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/macd/32/3257_2.png) [@macd](https://discourse.julialang.org/u/macd)\
**Post date:** [September 13, 2023, 1:50am UTC](https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798/4 "2023-09-13T01:50:05Z")

</div>

Take a look at [GitHub - RalphAS/GenericSchur.jl: Julia package for Schur decomposition of matrices with generic element types](https://github.com/RalphAS/GenericSchur.jl) I found it useful for BigFloat.

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [September 13, 2023, 3:26am UTC](https://discourse.julialang.org/t/eigen-does-not-support-keyword-argumwnt-permute-for-bigfloat-matrix/103798/5 "2023-09-13T03:26:43Z")

</div>

Correct, `GenericLinearAlgebra` is not a complete extension, which the documentation all but says. [issue #57](https://github.com/JuliaLinearAlgebra/GenericLinearAlgebra.jl/issues/57) is relevant to your use case. My earlier point was that the `permute` and `scale` keywords are not intended for any symmetric matrix types, and the point is separate from `GenericLinearAlgebra` extending `eigen` to `Hermitian{BigFloat, Matrix{BigFloat}}` (without the keywords of course) but not `Matrix{BigFloat}`.
