41
41
42
42
43
43
# Plan a multiply by DL*(T.*H)*DR
44
- immutable ToepltizHankelPlan{T}
45
- T:: TriangularToeplitz{T}
46
- C:: Matrix{T} # A cholesky factorization of H: H=CC'
47
- DL:: Vector{T}
48
- DR:: Vector{T}
44
+ immutable ToeplitzHankelPlan{TT}
45
+ T:: TriangularToeplitz{TT}
46
+ C:: Matrix{TT} # A cholesky factorization of H: H=CC'
47
+ DL:: Vector{TT}
48
+ DR:: Vector{TT}
49
+
50
+ ToeplitzHankelPlan (T,C,DL,DR)= new (T,C,DL,DR)
49
51
end
50
52
51
- ToepltizHankelPlan (T:: TriangularToeplitz ,C:: Matrix )= ToepltizHankelPlan (T,C,ones (size (T,1 )),ones (size (T,2 )))
52
- ToepltizHankelPlan (T:: TriangularToeplitz ,H:: Hankel ,D... )= ToepltizHankelPlan (T,partialchol (H),D... )
53
53
54
- * (P:: ToepltizHankelPlan ,v:: Vector )= P. DL.* toeplitzcholmult (P. T,P. C,P. DR.* v)
54
+ function ToeplitzHankelPlan (T:: TriangularToeplitz ,C:: Matrix ,DL:: AbstractVector ,DR:: AbstractVector )
55
+ TT= promote_type (eltype (T),eltype (C),eltype (DL),eltype (DR))
56
+ ToeplitzHankelPlan {TT} (T,C,collect (TT,DL),collect (TT,DR))
57
+ end
58
+ ToeplitzHankelPlan (T:: TriangularToeplitz ,C:: Matrix ) =
59
+ ToeplitzHankelPlan (T,C,ones (size (T,1 )),ones (size (T,2 )))
60
+ ToeplitzHankelPlan (T:: TriangularToeplitz ,H:: Hankel ,D... ) =
61
+ ToeplitzHankelPlan (T,partialchol (H),D... )
62
+
63
+ * (P:: ToeplitzHankelPlan ,v:: Vector )= P. DL.* toeplitzcholmult (P. T,P. C,P. DR.* v)
55
64
56
65
57
66
87
96
Λ (z:: AbstractArray )= Λ (eltype (z),z)
88
97
89
98
90
- function leg2chebuTH ( n)
91
- λ= Λ (0 : 0.5 : n- 1 )
92
- t= zeros (n)
99
+ function leg2chebuTH {TT} ( :: Type{TT} , n)
100
+ λ= Λ (TT, 0 : 0.5 : n- 1 )
101
+ t= zeros (TT, n)
93
102
t[1 : 2 : end ]= λ[1 : 2 : n]. / (((1 : 2 : n)- 2 ))
94
103
T= TriangularToeplitz (- 2 / π* t,:U )
95
104
H= Hankel (λ[1 : n]. / ((1 : n)+ 1 ),λ[n: end ]. / ((n: 2 n- 1 )+ 1 ))
96
105
T,H
97
106
end
98
107
99
- leg2chebuplan ( n)= ToepltizHankelPlan (leg2chebuTH (n)... ,1 : n,ones (n))
108
+ th_leg2chebuplan {TT} ( :: Type{TT} , n)= ToeplitzHankelPlan (leg2chebuTH (TT, n)... ,1 : n,ones (TT, n))
100
109
101
110
function leg2chebTH {TT} (:: Type{TT} ,n)
102
111
λ= Λ (TT,0 : 0.5 : n- 1 )
@@ -109,18 +118,19 @@ function leg2chebTH{TT}(::Type{TT},n)
109
118
T,H,DL
110
119
end
111
120
112
- leg2chebplan {TT} (:: Type{TT} ,n)= ToepltizHankelPlan (leg2chebTH (TT,n)... ,ones (TT,n))
121
+ th_leg2chebplan {TT} (:: Type{TT} ,n)= ToeplitzHankelPlan (leg2chebTH (TT,n)... ,ones (TT,n))
113
122
114
- function leg2chebTHslow (n)
115
- λ= map (Λ,0 : 0.5 : n- 1 )
116
- t= zeros (n)
117
- t[1 : 2 : end ]= λ[1 : 2 : n]
118
- T= TriangularToeplitz (2 / π* t,:U )
119
- H= Hankel (λ[1 : n],λ[n: end ])
120
- DL= ones (n)
121
- DL[1 ]*= 0.5
122
- T,H,DL
123
- end
123
+ # function leg2chebTHslow(n)
124
+ # λ=map(Λ,0:0.5:n-1)
125
+ # t=zeros(n)
126
+ # t[1:2:end]=λ[1:2:n]
127
+ # T=TriangularToeplitz(2/π*t,:U)
128
+ # H=Hankel(λ[1:n],λ[n:end])
129
+ # DL=ones(n)
130
+ # DL[1]*=0.5
131
+ # T,H,DL
132
+ # end
124
133
125
134
126
- leg2cheb (v)= leg2chebplan (eltype (v),length (v))* v
135
+ th_leg2cheb (v)= th_leg2chebplan (eltype (v),length (v))* v
136
+ th_leg2chebu (v)= th_leg2chebuplan (eltype (v),length (v))* v
0 commit comments