@@ -165,11 +165,12 @@ function Λ(x::Float64,λ₁::Float64,λ₂::Float64)
165
165
(x+ λ₂)/ (x+ λ₁)* Λ (x+ 1. ,λ₁,λ₂)
166
166
end
167
167
end
168
+ Λ {T<:Number} (x:: AbstractArray{T} ,λ₁:: Number ,λ₂:: Number ) = promote_type (T,typeof (λ₁),typeof (λ₂))[ Λ (x[i],λ₁,λ₂) for i in eachindex (x) ]
168
169
169
170
170
171
Cnλ (n:: Integer ,λ:: Float64 ) = 2 ^ λ/ sqrtpi* Λ (n+ λ)
171
172
Cnλ (n:: Integer ,λ:: Number ) = 2 ^ λ/ sqrt (oftype (λ,π))* Λ (n+ λ)
172
- function broadcast {T<:Integer} (:: typeof (Cnλ), n:: UnitRange{T} ,λ:: Number )
173
+ function Cnλ {T<:Integer} (n:: UnitRange{T} ,λ:: Number )
173
174
ret = Vector {typeof(λ)} (length (n))
174
175
ret[1 ] = Cnλ (first (n),λ)
175
176
for i= 2 : length (n)
@@ -178,6 +179,9 @@ function broadcast{T<:Integer}(::typeof(Cnλ),n::UnitRange{T},λ::Number)
178
179
ret
179
180
end
180
181
182
+ Cnλ {T<:Integer} (n:: AbstractVector{T} ,λ:: Number ) = [ Cnλ (n[i],λ) for i= 1 : length (n) ]
183
+ Cnλ {T<:Integer} (n:: AbstractMatrix{T} ,λ:: Number ) = [ Cnλ (n[i,j],λ) for i= 1 : size (n,1 ), j= 1 : size (n,2 ) ]
184
+
181
185
function Cnmλ (n:: Integer ,m:: Integer ,λ:: Number )
182
186
if m == 0
183
187
Cnλ (n,λ)
@@ -186,6 +190,9 @@ function Cnmλ(n::Integer,m::Integer,λ::Number)
186
190
end
187
191
end
188
192
193
+ Cnmλ {T<:Integer} (n:: AbstractVector{T} ,m:: Integer ,λ:: Number ) = [ Cnmλ (n[i],m,λ) for i= 1 : length (n) ]
194
+
195
+
189
196
function Cnαβ (n:: Integer ,α:: Number ,β:: Number )
190
197
if n== 0
191
198
2 ^ (α+ β+ 1 )* beta (α+ 1 ,β+ 1 )/ π
@@ -206,6 +213,9 @@ function Cnαβ(n::Integer,α::Float64,β::Float64)
206
213
end
207
214
end
208
215
216
+ Cnαβ {T<:Integer} (n:: AbstractVector{T} ,α:: Number ,β:: Number ) = [ Cnαβ (n[i],α,β) for i= 1 : length (n) ]
217
+ Cnαβ {T<:Integer} (n:: AbstractMatrix{T} ,α:: Number ,β:: Number ) = [ Cnαβ (n[i,j],α,β) for i= 1 : size (n,1 ), j= 1 : size (n,2 ) ]
218
+
209
219
function Cnmαβ (n:: Integer ,m:: Integer ,α:: Number ,β:: Number )
210
220
if m == 0
211
221
Cnαβ (n,α,β)
@@ -214,6 +224,15 @@ function Cnmαβ(n::Integer,m::Integer,α::Number,β::Number)
214
224
end
215
225
end
216
226
227
+ Cnmαβ {T<:Integer} (n:: AbstractVector{T} ,m:: Integer ,α:: Number ,β:: Number ) = [ Cnmαβ (n[i],m,α,β) for i= 1 : length (n) ]
228
+ Cnmαβ {T<:Integer} (n:: AbstractMatrix{T} ,m:: Integer ,α:: Number ,β:: Number ) = [ Cnmαβ (n[i,j],m,α,β) for i= 1 : size (n,1 ), j= 1 : size (n,2 ) ]
229
+
230
+ function Cnmαβ {T<:Number} (n:: Integer ,m:: Integer ,α:: AbstractArray{T} ,β:: AbstractArray{T} )
231
+ shp = promote_shape (size (α),size (β))
232
+ reshape ([ Cnmαβ (n,m,α[i],β[i]) for i in eachindex (α,β) ], shp)
233
+ end
234
+
235
+
217
236
function absf (α:: Number ,β:: Number ,m:: Int ,θ:: Number )
218
237
ret = zero (θ)
219
238
for l= 0 : m
@@ -222,7 +241,12 @@ function absf(α::Number,β::Number,m::Int,θ::Number)
222
241
ret
223
242
end
224
243
225
- function broadcast {T<:Number} (:: typeof (absf),α:: Number ,β:: Number ,m:: Int ,θ:: AbstractArray{T,1} )
244
+ function absf {T<:Number} (α:: AbstractArray{T} ,β:: AbstractArray{T} ,m:: Int ,θ:: Number )
245
+ shp = promote_shape (size (α),size (β))
246
+ reshape ([ absf (α[i],β[i],m,θ) for i in eachindex (α,β) ], shp)
247
+ end
248
+
249
+ function absf {T<:Number} (α:: Number ,β:: Number ,m:: Int ,θ:: AbstractArray{T,1} )
226
250
ret = zero (θ)
227
251
cfs = zeros (T,m+ 1 )
228
252
for l= 0 : m
@@ -233,6 +257,8 @@ function broadcast{T<:Number}(::typeof(absf),α::Number,β::Number,m::Int,θ::Ab
233
257
end
234
258
ret
235
259
end
260
+ absf {T<:Number} (α:: Number ,β:: Number ,m:: Int ,θ:: AbstractArray{T,2} ) = [ absf (α,β,m,θ[i,j]) for i= 1 : size (θ,1 ), j= 1 : size (θ,2 ) ]
261
+ absf {T<:Number} (α:: Number ,β:: Number ,m:: Int ,θ:: AbstractArray{T} ) = reshape ([ absf (α,β,m,θ[i]) for i in eachindex (θ) ], size (θ))
236
262
237
263
function compute_absf! {T<:AbstractFloat} (ret:: Vector{T} ,cfs:: Matrix{T} ,α:: T ,β:: T ,tempcos:: Vector{T} ,tempsin:: Vector{T} ,tempcosβsinα:: Vector{T} ,m:: Int )
238
264
@inbounds for i= 1 : length (ret)
0 commit comments