@@ -26,7 +26,7 @@ function Base.showerror(io::IO, ex::AmosException)
26
26
end
27
27
28
28
# # Airy functions
29
- function _airy (z:: Complex128 , id:: Int32 , kode:: Int32 )
29
+ function _airy (z:: Complex{Float64} , id:: Int32 , kode:: Int32 )
30
30
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
31
31
ae1, ae2 = Ref {Int32} (), Ref {Int32} ()
32
32
@@ -43,7 +43,7 @@ function _airy(z::Complex128, id::Int32, kode::Int32)
43
43
end
44
44
end
45
45
46
- function _biry (z:: Complex128 , id:: Int32 , kode:: Int32 )
46
+ function _biry (z:: Complex{Float64} , id:: Int32 , kode:: Int32 )
47
47
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
48
48
ae1 = Ref {Int32} ()
49
49
67
67
Airy function of the first kind ``\\ operatorname{Ai}(x)``.
68
68
"""
69
69
function airyai end
70
- airyai (z:: Complex128 ) = _airy (z, Int32 (0 ), Int32 (1 ))
70
+ airyai (z:: Complex{Float64} ) = _airy (z, Int32 (0 ), Int32 (1 ))
71
71
72
72
"""
73
73
airyaiprime(x)
74
74
75
75
Derivative of the Airy function of the first kind ``\\ operatorname{Ai}'(x)``.
76
76
"""
77
77
function airyaiprime end
78
- airyaiprime (z:: Complex128 ) = _airy (z, Int32 (1 ), Int32 (1 ))
78
+ airyaiprime (z:: Complex{Float64} ) = _airy (z, Int32 (1 ), Int32 (1 ))
79
79
80
80
"""
81
81
airybi(x)
82
82
83
83
Airy function of the second kind ``\\ operatorname{Bi}(x)``.
84
84
"""
85
85
function airybi end
86
- airybi (z:: Complex128 ) = _biry (z, Int32 (0 ), Int32 (1 ))
86
+ airybi (z:: Complex{Float64} ) = _biry (z, Int32 (0 ), Int32 (1 ))
87
87
88
88
"""
89
89
airybiprime(x)
90
90
91
91
Derivative of the Airy function of the second kind ``\\ operatorname{Bi}'(x)``.
92
92
"""
93
93
function airybiprime end
94
- airybiprime (z:: Complex128 ) = _biry (z, Int32 (1 ), Int32 (1 ))
94
+ airybiprime (z:: Complex{Float64} ) = _biry (z, Int32 (1 ), Int32 (1 ))
95
95
96
96
"""
97
97
airyaix(x)
@@ -100,7 +100,7 @@ Scaled Airy function of the first kind ``\\operatorname{Ai}(x) e^{\\frac{2}{3} x
100
100
\\ sqrt{x}}``. Throws `DomainError` for negative `Real` arguments.
101
101
"""
102
102
function airyaix end
103
- airyaix (z:: Complex128 ) = _airy (z, Int32 (0 ), Int32 (2 ))
103
+ airyaix (z:: Complex{Float64} ) = _airy (z, Int32 (0 ), Int32 (2 ))
104
104
105
105
"""
106
106
airyaiprimex(x)
@@ -109,30 +109,30 @@ Scaled derivative of the Airy function of the first kind ``\\operatorname{Ai}'(x
109
109
e^{\\ frac{2}{3} x \\ sqrt{x}}``. Throws `DomainError` for negative `Real` arguments.
110
110
"""
111
111
function airyaiprimex end
112
- airyaiprimex (z:: Complex128 ) = _airy (z, Int32 (1 ), Int32 (2 ))
112
+ airyaiprimex (z:: Complex{Float64} ) = _airy (z, Int32 (1 ), Int32 (2 ))
113
113
114
114
"""
115
115
airybix(x)
116
116
117
117
Scaled Airy function of the second kind ``\\ operatorname{Bi}(x) e^{- \\ left| \\ operatorname{Re} \\ left( \\ frac{2}{3} x \\ sqrt{x} \\ right) \\ right|}``.
118
118
"""
119
119
function airybix end
120
- airybix (z:: Complex128 ) = _biry (z, Int32 (0 ), Int32 (2 ))
120
+ airybix (z:: Complex{Float64} ) = _biry (z, Int32 (0 ), Int32 (2 ))
121
121
122
122
"""
123
123
airybiprimex(x)
124
124
125
125
Scaled derivative of the Airy function of the second kind ``\\ operatorname{Bi}'(x) e^{- \\ left| \\ operatorname{Re} \\ left( \\ frac{2}{3} x \\ sqrt{x} \\ right) \\ right|}``.
126
126
"""
127
127
function airybiprimex end
128
- airybiprimex (z:: Complex128 ) = _biry (z, Int32 (1 ), Int32 (2 ))
128
+ airybiprimex (z:: Complex{Float64} ) = _biry (z, Int32 (1 ), Int32 (2 ))
129
129
130
130
for afn in (:airyai , :airyaiprime , :airybi , :airybiprime ,
131
131
:airyaix , :airyaiprimex , :airybix , :airybiprimex )
132
132
@eval begin
133
133
$ afn (z:: Complex ) = $ afn (float (z))
134
134
$ afn (z:: Complex{<:AbstractFloat} ) = throw (MethodError ($ afn,(z,)))
135
- $ afn (z:: Complex64 ) = Complex64 ($ afn (Complex128 (z)))
135
+ $ afn (z:: Complex{Float32} ) = Complex {Float32} ($ afn (Complex {Float64} (z)))
136
136
end
137
137
if afn in (:airyaix , :airyaiprimex )
138
138
@eval $ afn (x:: Real ) = x < 0 ? throw (DomainError (x, " `x` must be nonnegative." )) : real ($ afn (complex (float (x))))
@@ -172,7 +172,7 @@ for jy in ("j","y"), nu in (0,1)
172
172
end
173
173
174
174
175
- function _besselh (nu:: Float64 , k:: Int32 , z:: Complex128 , kode:: Int32 )
175
+ function _besselh (nu:: Float64 , k:: Int32 , z:: Complex{Float64} , kode:: Int32 )
176
176
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
177
177
ae1, ae2 = Ref {Int32} (), Ref {Int32} ()
178
178
@@ -189,7 +189,7 @@ function _besselh(nu::Float64, k::Int32, z::Complex128, kode::Int32)
189
189
end
190
190
end
191
191
192
- function _besseli (nu:: Float64 , z:: Complex128 , kode:: Int32 )
192
+ function _besseli (nu:: Float64 , z:: Complex{Float64} , kode:: Int32 )
193
193
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
194
194
ae1, ae2 = Ref {Int32} (), Ref {Int32} ()
195
195
@@ -206,7 +206,7 @@ function _besseli(nu::Float64, z::Complex128, kode::Int32)
206
206
end
207
207
end
208
208
209
- function _besselj (nu:: Float64 , z:: Complex128 , kode:: Int32 )
209
+ function _besselj (nu:: Float64 , z:: Complex{Float64} , kode:: Int32 )
210
210
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
211
211
ae1, ae2 = Ref {Int32} (), Ref {Int32} ()
212
212
@@ -223,7 +223,7 @@ function _besselj(nu::Float64, z::Complex128, kode::Int32)
223
223
end
224
224
end
225
225
226
- function _besselk (nu:: Float64 , z:: Complex128 , kode:: Int32 )
226
+ function _besselk (nu:: Float64 , z:: Complex{Float64} , kode:: Int32 )
227
227
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
228
228
ae1, ae2 = Ref {Int32} (), Ref {Int32} ()
229
229
@@ -240,7 +240,7 @@ function _besselk(nu::Float64, z::Complex128, kode::Int32)
240
240
end
241
241
end
242
242
243
- function _bessely (nu:: Float64 , z:: Complex128 , kode:: Int32 )
243
+ function _bessely (nu:: Float64 , z:: Complex{Float64} , kode:: Int32 )
244
244
ai1, ai2 = Ref {Float64} (), Ref {Float64} ()
245
245
ae1, ae2 = Ref {Int32} (), Ref {Int32} ()
246
246
wrk1, wrk2 = Ref {Float64} (), Ref {Float64} ()
@@ -268,7 +268,7 @@ selecting [`hankelh1`](@ref) or [`hankelh2`](@ref), respectively.
268
268
"""
269
269
function besselh end
270
270
271
- function besselh (nu:: Float64 , k:: Integer , z:: Complex128 )
271
+ function besselh (nu:: Float64 , k:: Integer , z:: Complex{Float64} )
272
272
if nu < 0
273
273
s = (k == 1 ) ? 1 : - 1
274
274
return _besselh (- nu,Int32 (k),z,Int32 (1 )) * complex (cospi (nu),- s* sinpi (nu))
@@ -291,15 +291,15 @@ exponential factor (analytically), so it avoids these problems.
291
291
"""
292
292
function besselhx end
293
293
294
- function besselhx (nu:: Float64 , k:: Integer , z:: Complex128 )
294
+ function besselhx (nu:: Float64 , k:: Integer , z:: Complex{Float64} )
295
295
if nu < 0
296
296
s = (k == 1 ) ? 1 : - 1
297
297
return _besselh (- nu,Int32 (k),z,Int32 (2 )) * complex (cospi (nu),- s* sinpi (nu))
298
298
end
299
299
return _besselh (nu,Int32 (k),z,Int32 (2 ))
300
300
end
301
301
302
- function besseli (nu:: Float64 , z:: Complex128 )
302
+ function besseli (nu:: Float64 , z:: Complex{Float64} )
303
303
if nu < 0
304
304
if isinteger (nu)
305
305
return _besseli (- nu,z,Int32 (1 ))
@@ -311,7 +311,7 @@ function besseli(nu::Float64, z::Complex128)
311
311
end
312
312
end
313
313
314
- function besselix (nu:: Float64 , z:: Complex128 )
314
+ function besselix (nu:: Float64 , z:: Complex{Float64} )
315
315
if nu < 0
316
316
if isinteger (nu)
317
317
return _besseli (- nu,z,Int32 (2 ))
@@ -323,7 +323,7 @@ function besselix(nu::Float64, z::Complex128)
323
323
end
324
324
end
325
325
326
- function besselj (nu:: Float64 , z:: Complex128 )
326
+ function besselj (nu:: Float64 , z:: Complex{Float64} )
327
327
if nu < 0
328
328
if isinteger (nu)
329
329
return _besselj (- nu,z,Int32 (1 ))* cospi (nu)
@@ -339,7 +339,7 @@ besselj(nu::Cint, x::Float64) = ccall((:jn, libm), Float64, (Cint, Float64), nu,
339
339
besselj (nu:: Cint , x:: Float32 ) = ccall ((:jnf , libm), Float32, (Cint, Float32), nu, x)
340
340
341
341
342
- function besseljx (nu:: Float64 , z:: Complex128 )
342
+ function besseljx (nu:: Float64 , z:: Complex{Float64} )
343
343
if nu < 0
344
344
if isinteger (nu)
345
345
return _besselj (- nu,z,Int32 (2 ))* cospi (nu)
@@ -351,9 +351,9 @@ function besseljx(nu::Float64, z::Complex128)
351
351
end
352
352
end
353
353
354
- besselk (nu:: Float64 , z:: Complex128 ) = _besselk (abs (nu), z, Int32 (1 ))
354
+ besselk (nu:: Float64 , z:: Complex{Float64} ) = _besselk (abs (nu), z, Int32 (1 ))
355
355
356
- besselkx (nu:: Float64 , z:: Complex128 ) = _besselk (abs (nu), z, Int32 (2 ))
356
+ besselkx (nu:: Float64 , z:: Complex{Float64} ) = _besselk (abs (nu), z, Int32 (2 ))
357
357
358
358
function bessely (nu:: Cint , x:: Float64 )
359
359
if x < 0
@@ -368,15 +368,15 @@ function bessely(nu::Cint, x::Float32)
368
368
ccall ((:ynf , libm), Float32, (Cint, Float32), nu, x)
369
369
end
370
370
371
- function bessely (nu:: Float64 , z:: Complex128 )
371
+ function bessely (nu:: Float64 , z:: Complex{Float64} )
372
372
if nu < 0
373
373
return _bessely (- nu,z,Int32 (1 ))* cospi (nu) - _besselj (- nu,z,Int32 (1 ))* sinpi (nu)
374
374
else
375
375
return _bessely (nu,z,Int32 (1 ))
376
376
end
377
377
end
378
378
379
- function besselyx (nu:: Float64 , z:: Complex128 )
379
+ function besselyx (nu:: Float64 , z:: Complex{Float64} )
380
380
if nu < 0
381
381
return _bessely (- nu,z,Int32 (2 ))* cospi (nu) - _besselj (- nu,z,Int32 (2 ))* sinpi (nu)
382
382
else
@@ -500,7 +500,7 @@ for f in ("i", "ix", "j", "jx", "k", "kx", "y", "yx")
500
500
$ bfn (Tf (nu), Complex {Tf} (z))
501
501
end
502
502
$ bfn (k:: T , z:: Complex{T} ) where {T<: AbstractFloat } = throw (MethodError ($ bfn,(k,z)))
503
- $ bfn (nu:: Float32 , x:: Complex64 ) = Complex64 ($ bfn (Float64 (nu), Complex128 (x)))
503
+ $ bfn (nu:: Float32 , x:: Complex{Float32} ) = Complex {Float32} ($ bfn (Float64 (nu), Complex {Float64} (x)))
504
504
end
505
505
end
506
506
@@ -517,7 +517,7 @@ for bfn in (:besselh, :besselhx)
517
517
end
518
518
519
519
$ bfn (nu:: T , k:: Integer , z:: Complex{T} ) where {T<: AbstractFloat } = throw (MethodError ($ bfn,(nu,k,z)))
520
- $ bfn (nu:: Float32 , k:: Integer , x:: Complex64 ) = Complex64 ($ bfn (Float64 (nu), k, Complex128 (x)))
520
+ $ bfn (nu:: Float32 , k:: Integer , x:: Complex{Float32} ) = Complex {Float32} ($ bfn (Float64 (nu), k, Complex {Float64} (x)))
521
521
end
522
522
end
523
523
0 commit comments