# Methods to diagonalize a Matrix{BigFloat}?

**URL:** https://discourse.julialang.org/t/methods-to-diagonalize-a-matrix-bigfloat/4571
**Category:** Numerics
**Created:** [June 30, 2017, 5:19pm UTC](https://discourse.julialang.org/t/methods-to-diagonalize-a-matrix-bigfloat/4571 "2017-06-30T17:19:21Z")
**Posts on this page:** 3
**Page:** 2

<div class="post-metadata">

### Author: ![Gregstrq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gregstrq/32/20620_2.png) [@Gregstrq](https://discourse.julialang.org/u/Gregstrq)
#### Post date: [January 31, 2020, 12:52pm UTC](https://discourse.julialang.org/t/methods-to-diagonalize-a-matrix-bigfloat/4571/21 "2020-01-31T12:52:46Z")

</div>

Great. Thank you.

---

<div class="post-metadata">

### Author: ![ymocquard](https://avatars.discourse-cdn.com/v4/letter/y/d9b06d/32.png) [@ymocquard](https://discourse.julialang.org/u/ymocquard)
#### Post date: [January 25, 2021, 8:30am UTC](https://discourse.julialang.org/t/methods-to-diagonalize-a-matrix-bigfloat/4571/22 "2021-01-25T08:30:44Z")

</div>

There is a problem when the determinant of the matrix is zero, per example :

```julia
julia> using LinearAlgebra

julia> using GenericSchur

julia> eigvecs(BigFloat.([0 0 1 0; 0 0 0 0; -1 0 0 0; 0 0 0 0]))
ERROR: ArgumentError: iteration limit 400 reached
Stacktrace:
 [1] _gschur!(::Hessenberg{BigFloat,UpperHessenberg{BigFloat,Array{BigFloat,2}},Array{BigFloat,2},Array{GenericSchur.Householder{BigFloat,S} where S<:(StridedArray{T, 1} where T),1},Bool}, ::Array{BigFloat,2}; tol::BigFloat, debug::Bool, shiftmethod::Symbol, maxiter::Int64, standardize::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:377
 [2] _gschur! at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:359 [inlined]
 [3] gschur!(::Array{BigFloat,2}; wantZ::Bool, scale::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:630
 [4] gschur! at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:617 [inlined]
 [5] #schur!#1 at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:12 [inlined]
 [6] schur! at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:12 [inlined]
 [7] schur at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/schur.jl:143 [inlined]
 [8] eigen!(::Array{BigFloat,2}; permute::Bool, scale::Bool, sortby::typeof(LinearAlgebra.eigsortby)) at /Users/ymocquar/.julia/packages/GenericSchur/YzsRq/src/GenericSchur.jl:69
 [9] eigen(::Array{BigFloat,2}; permute::Bool, scale::Bool, sortby::typeof(LinearAlgebra.eigsortby)) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/eigen.jl:237
 [10] eigen at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/eigen.jl:235 [inlined]
 [11] #eigvecs#70 at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/eigen.jl:257 [inlined]
 [12] eigvecs(::Array{BigFloat,2}) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/eigen.jl:257
 [13] top-level scope at REPL[35]:1

```

---

<div class="post-metadata">

### Author: ![Ralph\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ralph_smith/32/10344_2.png) [@Ralph\_Smith](https://discourse.julialang.org/u/Ralph_Smith)
#### Post date: [January 26, 2021, 4:46am UTC](https://discourse.julialang.org/t/methods-to-diagonalize-a-matrix-bigfloat/4571/23 "2021-01-26T04:46:09Z")

</div>

Thanks for the report. I’m currently revising the methods for real element types, to deal with edge cases like this. In the interim please try adding `0im` to make the matrix complex.

[Previous page](https://discourse.julialang.org/t/methods-to-diagonalize-a-matrix-bigfloat/4571.md?page=1)
