# Error reordering Schur decomposition

**URL:** <https://discourse.julialang.org/t/error-reordering-schur-decomposition/83948>\
**Category:** General Usage\
**Tags:** question\
**Created:** [July 8, 2022, 12:35pm UTC](https://discourse.julialang.org/t/error-reordering-schur-decomposition/83948 "2022-07-08T12:35:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![AS90](https://avatars.discourse-cdn.com/v4/letter/a/3e96dc/32.png) [@AS90](https://discourse.julialang.org/u/AS90)\
**Post date:** [July 8, 2022, 12:35pm UTC](https://discourse.julialang.org/t/error-reordering-schur-decomposition/83948/1 "2022-07-08T12:35:28Z")

</div>

Hello. I wish to suitably reorder the eigenvalues resulting from a generalised Schur matrix decomposition in an ascending fashion. This is the code.

```julia
using LinearAlgebra
A=randn(3, 3);
B=randn(3, 3);
(S, T, Qt, Z, eS, eT)=schur(A, B);
select=abs.(eT./eS).<1;
(S_re, T_re, Qt_re, Z_re, eS_re, eT_re)=ordschur(S, T, Qt, Z, eS, eT, select)

```

The error I get, however, is the following.

> MethodError: no method matching ordschur(::Array{Float64,2}, ::Array{Float64,2}, ::Array{Float64,2}, ::Array{Float64,2}, ::Array{Complex{Float64},1}, ::Array{Float64,1}, ::BitArray{1})
> 
> Stacktrace:  
> [1] top-level scope at In[153]:6  
> [2] include\_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091  
> [3] execute\_code(::String, ::String) at /Users/Name/.julia/packages/IJulia/a1SNk/src/execute\_request.jl:27  
> [4] execute\_request(::ZMQ.Socket, ::IJulia.Msg) at /Users/Name/.julia/packages/IJulia/a1SNk/src/execute\_request.jl:86  
> [5] #invokelatest#1 at ./essentials.jl:710 [inlined]  
> [6] invokelatest at ./essentials.jl:709 [inlined]  
> [7] eventloop(::ZMQ.Socket) at /Users/Name/.julia/packages/IJulia/a1SNk/src/eventloop.jl:8  
> [8] (::IJulia.var"#15#18")() at ./task.jl:356

The “ordschur” command does not seem to work. The Julia version I am using is 1.5.3. Thank you.

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [July 8, 2022, 1:15pm UTC](https://discourse.julialang.org/t/error-reordering-schur-decomposition/83948/2 "2022-07-08T13:15:19Z")

</div>

I think the usage is

```julia
using LinearAlgebra
A = randn(3, 3);
B = randn(3, 3);
G = schur(A, B);
(S, T, Qt, Z, eS, eT) = G
select = abs.(eT./eS).<1;
(S_re, T_re, Qt_re, Z_re, eS_re, eT_re) = ordschur(G, select)

```

---

<div class="post-metadata">

**Author:** ![AS90](https://avatars.discourse-cdn.com/v4/letter/a/3e96dc/32.png) [@AS90](https://discourse.julialang.org/u/AS90)\
**Post date:** [July 9, 2022, 7:22am UTC](https://discourse.julialang.org/t/error-reordering-schur-decomposition/83948/4 "2022-07-09T07:22:03Z")

</div>

Thank you for your response, but I had tried that too and the reordering did not seem to work at all.

---

<div class="post-metadata">

**Author:** ![AS90](https://avatars.discourse-cdn.com/v4/letter/a/3e96dc/32.png) [@AS90](https://discourse.julialang.org/u/AS90)\
**Post date:** [July 10, 2022, 8:28am UTC](https://discourse.julialang.org/t/error-reordering-schur-decomposition/83948/5 "2022-07-10T08:28:12Z")

</div>

Just in case, the reordering does work for a non-generalised Schur decomposition.

```julia
using LinearAlgebra
A=randn(3, 3);
F=schur(A);
select=abs.(diag(F.T)).<1;
G=ordschur(F, select)

F.T==G.T

false

F.T

3×3 Array{Float64,2}:
 -1.50325 0.653262 1.16942
  0.0 -0.402418 -0.743439
  0.0 0.0 0.349186

G.T

3×3 Array{Float64,2}:
 -0.402418 -0.425266 -0.497705
  0.0 0.349186 -1.38507
  0.0 0.0 -1.50325

```

Any help on making it work for the generalised case is appreciated. Thanks.
