|
1 | 1 | @testitem "Eigenvalues" begin |
2 | 2 | σx = sigmax() |
3 | | - result = eigenstates(σx, sparse = false) |
| 3 | + result = eigenstates(σx, sparse = Val(false)) |
4 | 4 | λd, ψd, Td = result |
5 | 5 | resstring = sprint((t, s) -> show(t, "text/plain", s), result) |
6 | 6 | valstring = sprint((t, s) -> show(t, "text/plain", s), result.values) |
7 | 7 | vecsstring = sprint((t, s) -> show(t, "text/plain", s), result.vectors) |
8 | | - λs, ψs, Ts = eigenstates(σx, sparse = true, eigvals = 2) |
9 | | - λs1, ψs1, Ts1 = eigenstates(σx, sparse = true, eigvals = 1) |
| 8 | + λs, ψs, Ts = eigenstates(σx, sparse = Val(true), eigvals = 2) |
| 9 | + λs1, ψs1, Ts1 = eigenstates(σx, sparse = Val(true), eigvals = 1) |
10 | 10 |
|
11 | 11 | @test all([ψ.type isa Ket for ψ in ψd]) |
12 | 12 | @test typeof(Td) <: AbstractMatrix |
13 | 13 | @test typeof(Ts) <: AbstractMatrix |
14 | 14 | @test typeof(Ts1) <: AbstractMatrix |
15 | | - @test all(abs.(eigenenergies(σx, sparse = false)) .≈ abs.(λd)) |
16 | | - @test all(abs.(eigenenergies(σx, sparse = true, eigvals = 2)) .≈ abs.(λs)) |
| 15 | + @test all(abs.(eigenenergies(σx, sparse = Val(false))) .≈ abs.(λd)) |
| 16 | + @test all(abs.(eigenenergies(σx, sparse = Val(true), eigvals = 2)) .≈ abs.(λs)) |
17 | 17 | @test resstring == |
18 | 18 | "EigsolveResult: type=$(Operator()) dims=$(result.dims)\nvalues:\n$(valstring)\nvectors:\n$vecsstring" |
19 | 19 |
|
|
33 | 33 |
|
34 | 34 | vals_d, vecs_d, mat_d = eigenstates(H_d) |
35 | 35 | vals_c, vecs_c, mat_c = eigenstates(H_c) |
36 | | - vals2, vecs2, mat2 = eigenstates(H_d, sparse = true, sigma = -0.9, eigvals = 10, krylovdim = 30, by = real) |
| 36 | + vals2, vecs2, mat2 = eigenstates(H_d, sparse = Val(true), sigma = -0.9, eigvals = 10, krylovdim = 30, by = real) |
37 | 37 |
|
38 | 38 | @test real.(vals_d[1:20]) ≈ real.(vals_c[1:20]) |
39 | 39 | @test real.(vals_d[1:10]) ≈ real.(vals2[1:10]) |
|
67 | 67 | @test vec2mat(vecs[:, 1]) * exp(-1im * angle(vecs[1, 1])) ≈ vec2mat(vecs3[:, 1]) atol=1e-5 |
68 | 68 |
|
69 | 69 | # eigen solve for QuantumObject |
70 | | - result = eigenstates(L, sparse = true, sigma = 0.01, eigvals = 10, krylovdim = 50) |
| 70 | + result = eigenstates(L, sparse = Val(true), sigma = 0.01, eigvals = 10, krylovdim = 50) |
71 | 71 | vals, vecs = result |
72 | 72 | resstring = sprint((t, s) -> show(t, "text/plain", s), result) |
73 | 73 | valstring = sprint((t, s) -> show(t, "text/plain", s), result.values) |
|
105 | 105 | c_ops = [√((1 + n_th) * κ) * a, √κ * b, √(n_th * κ) * a_d] |
106 | 106 | L = liouvillian(H, c_ops) |
107 | 107 |
|
108 | | - UnionType = Union{QuantumToolbox.EigsolveResult{Vector{ComplexF64}, Matrix{ComplexF64}, QuantumToolbox.Operator, QuantumToolbox.Dimensions{2, Tuple{QuantumToolbox.Space, QuantumToolbox.Space}}}, QuantumToolbox.EigsolveResult{Vector{Float64}, Matrix{ComplexF64}, QuantumToolbox.Operator, QuantumToolbox.Dimensions{2, Tuple{QuantumToolbox.Space, QuantumToolbox.Space}}}} |
| 108 | + UnionType = Union{ |
| 109 | + QuantumToolbox.EigsolveResult{ |
| 110 | + Vector{ComplexF64}, |
| 111 | + Matrix{ComplexF64}, |
| 112 | + QuantumToolbox.Operator, |
| 113 | + QuantumToolbox.Dimensions{2,Tuple{QuantumToolbox.Space,QuantumToolbox.Space}}, |
| 114 | + }, |
| 115 | + QuantumToolbox.EigsolveResult{ |
| 116 | + Vector{Float64}, |
| 117 | + Matrix{ComplexF64}, |
| 118 | + QuantumToolbox.Operator, |
| 119 | + QuantumToolbox.Dimensions{2,Tuple{QuantumToolbox.Space,QuantumToolbox.Space}}, |
| 120 | + }, |
| 121 | + } |
109 | 122 |
|
110 | 123 | @inferred UnionType eigenstates(H, sparse = Val(false)) |
111 | 124 | @inferred eigenstates(H, sparse = Val(true)) |
|
0 commit comments