@@ -9,10 +9,7 @@ function cjt(c::AbstractVector,plan::ChebyshevJacobiPlan)
9
9
elseif α == 0.5 && β == - 0.5
10
10
decrementα! (ret,α,β)
11
11
elseif α == 0.5 && β == 0.5
12
- N > 1 && (ret[N] *= (4 N- 2 )/ N)
13
- N > 2 && (ret[N- 1 ] *= (4 N- 6 )/ (N- 1 ))
14
- @inbounds for i= N- 2 : - 1 : 2 ret[i] = (4 i- 2 )/ i* (ret[i]+ (2 i+ 1 )/ (8 i+ 8 )* ret[i+ 2 ]) end
15
- N > 2 && (ret[1 ] += 0.1875 ret[3 ])
12
+ decrementαβ! (ret,α,β)
16
13
end
17
14
for i= 1 : N ret[i] *= Cx (i- 1.0 )/ sqrtpi end
18
15
return ret
@@ -30,17 +27,13 @@ function cjt(c::AbstractVector,plan::ChebyshevUltrasphericalPlan)
30
27
N ≤ 1 && return c
31
28
if λ == 0 || λ == 1
32
29
ret = copy (c)
33
- if λ == 1
34
- N > 1 && (ret[N] *= (4 N- 2 )/ N)
35
- N > 2 && (ret[N- 1 ] *= (4 N- 6 )/ (N- 1 ))
36
- @inbounds for i= N- 2 : - 1 : 2 ret[i] = (4 i- 2 )/ i* (ret[i]+ (2 i+ 1 )/ (8 i+ 8 )* ret[i+ 2 ]) end
37
- N > 2 && (ret[1 ] += 0.1875 ret[3 ])
38
- end
30
+ λ == 1 && decrementαβ! (ret,λ- one (λ)/ 2 ,λ- one (λ)/ 2 )
39
31
for i= 1 : N ret[i] *= Cx (i- 1.0 )/ sqrtpi end
40
32
return ret
41
33
else
42
34
# Ultraspherical line
43
- ret = ultra2cheb (c,λ,plan)
35
+ ret = toline! (copy (c),λ- one (λ)/ 2 ,λ- one (λ)/ 2 )
36
+ ret = ultra2cheb (ret,modλ (λ),plan)
44
37
return ret
45
38
end
46
39
end
@@ -59,10 +52,7 @@ function icjt(c::AbstractVector,plan::ChebyshevJacobiPlan)
59
52
incrementα! (ret,α- 1 ,β)
60
53
return ret
61
54
elseif α == 0.5 && β == 0.5
62
- N > 2 && (ret[1 ] -= 0.1875 ret[3 ])
63
- @inbounds for i= 2 : N- 2 ret[i] = i/ (4 i- 2 )* ret[i] - (2 i+ 1 )/ (8 i+ 8 )* ret[i+ 2 ] end
64
- N > 2 && (ret[N- 1 ] *= (N- 1 )/ (4 N- 6 ))
65
- N > 1 && (ret[N] *= N/ (4 N- 2 ))
55
+ incrementαβ! (ret,α- 1 ,β- 1 )
66
56
return ret
67
57
else
68
58
return ret
@@ -82,18 +72,12 @@ function icjt(c::AbstractVector,plan::ChebyshevUltrasphericalPlan)
82
72
if λ == 0 || λ == 1
83
73
ret = copy (c)
84
74
for i= 1 : N ret[i] *= sqrtpi/ Cx (i- 1.0 ) end
85
- if λ == 1
86
- N > 2 && (ret[1 ] -= 0.1875 ret[3 ])
87
- @inbounds for i= 2 : N- 2 ret[i] = i/ (4 i- 2 )* ret[i] - (2 i+ 1 )/ (8 i+ 8 )* ret[i+ 2 ] end
88
- N > 2 && (ret[N- 1 ] *= (N- 1 )/ (4 N- 6 ))
89
- N > 1 && (ret[N] *= N/ (4 N- 2 ))
90
- return ret
91
- else
92
- return ret
93
- end
75
+ λ == 1 && incrementαβ! (ret,λ- 3 one (λ)/ 2 ,λ- 3 one (λ)/ 2 )
76
+ return ret
94
77
else
95
78
# Ultraspherical line
96
- ret = cheb2ultra (c,λ,plan)
79
+ ret = cheb2ultra (c,modλ (λ),plan)
80
+ fromline! (ret,λ- one (λ)/ 2 ,λ- one (λ)/ 2 )
97
81
return ret
98
82
end
99
83
end
@@ -114,12 +98,12 @@ function plan_icjt(c::AbstractVector,α,β;M::Int=7)
114
98
end
115
99
116
100
function plan_cjt (c:: AbstractVector ,λ;M:: Int = 7 )
117
- P = ForwardChebyshevUltrasphericalPlan (c,λ ,M)
101
+ P = ForwardChebyshevUltrasphericalPlan (c,modλ (λ) ,M)
118
102
P. CUC. λ = λ
119
103
P
120
104
end
121
105
function plan_icjt (c:: AbstractVector ,λ;M:: Int = 7 )
122
- P = BackwardChebyshevUltrasphericalPlan (c,λ ,M)
106
+ P = BackwardChebyshevUltrasphericalPlan (c,modλ (λ) ,M)
123
107
P. CUC. λ = λ
124
108
P
125
109
end
0 commit comments