@@ -2,14 +2,16 @@ function cjt(c::AbstractVector,plan::ChebyshevJacobiPlan)
2
2
α,β = getplanαβ (plan)
3
3
N = length (c)
4
4
N ≤ 1 && return c
5
- if α ^ 2 == 0.25 && β ^ 2 == 0.25
5
+ if modαβ (α) == 0.5 && modαβ (β) == 0.5
6
6
ret = copy (c)
7
7
if α == - 0.5 && β == 0.5
8
8
decrementβ! (ret,α,β)
9
9
elseif α == 0.5 && β == - 0.5
10
10
decrementα! (ret,α,β)
11
11
elseif α == 0.5 && β == 0.5
12
12
decrementαβ! (ret,α,β)
13
+ else
14
+ tosquare! (ret,α,β)
13
15
end
14
16
for i= 1 : N ret[i] *= Λ (i- 1.0 )/ sqrtpi end
15
17
return ret
@@ -25,9 +27,8 @@ function cjt(c::AbstractVector,plan::ChebyshevUltrasphericalPlan)
25
27
λ = getplanλ (plan)
26
28
N = length (c)
27
29
N ≤ 1 && return c
28
- if λ == 0 || λ == 1
29
- ret = copy (c)
30
- λ == 1 && decrementαβ! (ret,λ- one (λ)/ 2 ,λ- one (λ)/ 2 )
30
+ if modλ (λ) == 0
31
+ ret = toline! (copy (c),λ- one (λ)/ 2 ,λ- one (λ)/ 2 )
31
32
for i= 1 : N ret[i] *= Λ (i- 1.0 )/ sqrtpi end
32
33
return ret
33
34
else
@@ -42,7 +43,7 @@ function icjt(c::AbstractVector,plan::ChebyshevJacobiPlan)
42
43
α,β = getplanαβ (plan)
43
44
N = length (c)
44
45
N ≤ 1 && return c
45
- if α ^ 2 == 0.25 && β ^ 2 == 0.25
46
+ if modαβ (α) == 0.5 && modαβ (β) == 0.5
46
47
ret = copy (c)
47
48
for i= 1 : N ret[i] *= sqrtpi/ Λ (i- 1.0 ) end
48
49
if α == - 0.5 && β == 0.5
@@ -55,7 +56,7 @@ function icjt(c::AbstractVector,plan::ChebyshevJacobiPlan)
55
56
incrementαβ! (ret,α- 1 ,β- 1 )
56
57
return ret
57
58
else
58
- return ret
59
+ return fromsquare! ( ret,α,β)
59
60
end
60
61
else
61
62
# General half-open square
@@ -69,10 +70,10 @@ function icjt(c::AbstractVector,plan::ChebyshevUltrasphericalPlan)
69
70
λ = getplanλ (plan)
70
71
N = length (c)
71
72
N ≤ 1 && return c
72
- if λ == 0 || λ == 1
73
+ if modλ (λ) == 0
73
74
ret = copy (c)
74
75
for i= 1 : N ret[i] *= sqrtpi/ Λ (i- 1.0 ) end
75
- λ == 1 && incrementαβ ! (ret,λ- 3 one (λ)/ 2 ,λ- 3 one (λ)/ 2 )
76
+ fromline ! (ret,λ- one (λ)/ 2 ,λ- one (λ)/ 2 )
76
77
return ret
77
78
else
78
79
# Ultraspherical line
0 commit comments