diff --git a/Project.toml b/Project.toml index 81a743a..03c9131 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "SemiclassicalOrthogonalPolynomials" uuid = "291c01f3-23f6-4eb6-aeb0-063a639b53f2" authors = ["Sheehan Olver "] -version = "0.2.2" +version = "0.2.3" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/src/SemiclassicalOrthogonalPolynomials.jl b/src/SemiclassicalOrthogonalPolynomials.jl index b0c9fcc..97d620b 100644 --- a/src/SemiclassicalOrthogonalPolynomials.jl +++ b/src/SemiclassicalOrthogonalPolynomials.jl @@ -46,7 +46,7 @@ function getindex(P::SemiclassicalJacobiWeight, x::Real) end function sum(P::SemiclassicalJacobiWeight{T}) where T - (t,a,b,c) = map(big, map(float, (P.t,P.a,P.b,P.c))) + (t,a,b,c) = big.(float.(real.((P.t,P.a,P.b,P.c)))) return convert(T, t^c * beta(1+a,1+b) * _₂F₁general2(1+a,-c,2+a+b,1/t)) end @@ -336,13 +336,13 @@ function \(w_A::WeightedSemiclassicalJacobi, w_B::WeightedSemiclassicalJacobi) elseif wA.a == wB.a && wA.b == wB.b && wA.c+1 == wB.c @assert A.a == B.a && A.b == B.b && A.c+1 == B.c -op_lowering(A,A.t) - elseif wA.a+1 ≤ wB.a + elseif real(wA.a)+1 ≤ real(wB.a) C = SemiclassicalJacobi(A.t, A.a+1, A.b, A.c, A) w_C = SemiclassicalJacobiWeight(wA.t, wA.a+1, wA.b, wA.c) .* C L_2 = w_C \ w_B L_1 = w_A \ w_C L_1 * L_2 - elseif wA.b+1 ≤ wB.b + elseif real(wA.b)+1 ≤ real(wB.b) C = SemiclassicalJacobi(A.t, A.a, A.b+1, A.c, A) w_C = SemiclassicalJacobiWeight(wA.t, wA.a, wA.b+1, wA.c) .* C L_2 = w_C \ w_B diff --git a/test/runtests.jl b/test/runtests.jl index b2e4f83..c064259 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -447,6 +447,11 @@ end end end +@testset "Complex" begin + @test sum(SemiclassicalJacobiWeight{ComplexF64}(2,1,1,1)) ≈ 1/4 + SemiclassicalJacobi{ComplexF64}(2,1,1,1) \ SemiclassicalJacobi{ComplexF64}(2,0,1,1) +end + include("test_derivative.jl") include("test_twoband.jl") include("test_lowering.jl")