@@ -47,7 +47,7 @@ function _airyai(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
47
47
48
48
if x > zero (T)
49
49
# use relation to besselk (http://dlmf.nist.gov/9.6.E1)
50
- zz = 2 * z^ ( T ( 3 ) / 2 ) / 3
50
+ zz = 2 * z * sqrt (z ) / 3
51
51
return sqrt (z / 3 ) * besselk_continued_fraction_shift (one (T)/ 3 , zz) / π
52
52
else
53
53
# z is close to the negative real axis
@@ -56,12 +56,12 @@ function _airyai(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
56
56
# for imag(z) != 0 use rotation identity (http://dlmf.nist.gov/9.2.E14)
57
57
if iszero (y)
58
58
xabs = abs (x)
59
- xx = 2 * xabs^ ( T ( 3 ) / 2 ) / 3
59
+ xx = 2 * xabs * sqrt (xabs ) / 3
60
60
Jv, Yv = besseljy_positive_args (one (T)/ 3 , xx)
61
61
Jmv = (Jv - sqrt (T (3 )) * Yv) / 2
62
62
return convert (eltype (z), sqrt (xabs) * (Jmv + Jv) / 3 )
63
63
else
64
- return exp ( pi * im / 3 ) * _airyai (- z* exp ( pi * im / 3 )) + exp ( - pi * im / 3 ) * _airyai (- z* exp ( - pi * im / 3 ))
64
+ return cispi ( one (T) / 3 ) * _airyai (- z* cispi ( one (T) / 3 )) + cispi ( - one (T) / 3 ) * _airyai (- z* cispi ( - one (T) / 3 ))
65
65
end
66
66
end
67
67
end
@@ -92,7 +92,7 @@ function _airyaiprime(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
92
92
93
93
if x > zero (T)
94
94
# use relation to besselk (http://dlmf.nist.gov/9.6.E2)
95
- zz = 2 * z^ ( T ( 3 ) / 2 ) / 3
95
+ zz = 2 * z * sqrt (z ) / 3
96
96
return - z * besselk_continued_fraction_shift (T (2 )/ 3 , zz) / (π * sqrt (T (3 )))
97
97
else
98
98
# z is close to the negative real axis
@@ -101,12 +101,12 @@ function _airyaiprime(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
101
101
# for imag(z) != 0 use rotation identity (http://dlmf.nist.gov/9.2.E14)
102
102
if iszero (y)
103
103
xabs = abs (x)
104
- xx = 2 * xabs^ ( T ( 3 ) / 2 ) / 3
104
+ xx = 2 * xabs * sqrt (xabs ) / 3
105
105
Jv, Yv = besseljy_positive_args (T (2 )/ 3 , xx)
106
106
Jmv = - (Jv + sqrt (T (3 ))* Yv) / 2
107
107
return convert (eltype (z), xabs * (Jv - Jmv) / 3 )
108
108
else
109
- return - (exp ( 2pi * im / 3 )* _airyaiprime (- z* exp ( pi * im / 3 )) + exp ( - 2pi * im / 3 )* _airyaiprime (- z* exp ( - pi * im / 3 )))
109
+ return - (cispi ( T ( 2 ) / 3 ) * _airyaiprime (- z * cispi ( one (T) / 3 )) + cispi ( - T ( 2 ) / 3 ) * _airyaiprime (- z * cispi ( - one (T) / 3 )))
110
110
end
111
111
end
112
112
end
@@ -137,7 +137,7 @@ function _airybi(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
137
137
airybi_power_series_cutoff (x, y) && return airybi_power_series (z)
138
138
139
139
if x > zero (T)
140
- zz = 2 * z^ ( T ( 3 ) / 2 ) / 3
140
+ zz = 2 * z * sqrt (z ) / 3
141
141
shift = 20
142
142
order = one (T)/ 3
143
143
inu, inum1 = besseli_power_series_inu_inum1 (order + shift, zz)
@@ -149,12 +149,12 @@ function _airybi(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
149
149
else
150
150
if iszero (y)
151
151
xabs = abs (x)
152
- xx = 2 * xabs^ ( T ( 3 ) / 2 ) / 3
152
+ xx = 2 * xabs * sqrt (xabs ) / 3
153
153
Jv, Yv = besseljy_positive_args (one (T)/ 3 , xx)
154
154
Jmv = (Jv - sqrt (T (3 )) * Yv) / 2
155
155
return convert (eltype (z), sqrt (xabs/ 3 ) * (Jmv - Jv))
156
156
else
157
- return exp ( pi * im / 3 ) * _airybi (- z* exp ( pi * im / 3 )) + exp ( - pi * im / 3 ) * _airybi (- z* exp ( - pi * im / 3 ))
157
+ return cispi ( one (T) / 3 ) * _airybi (- z * cispi ( one (T) / 3 )) + cispi ( - one (T) / 3 ) * _airybi (- z* cispi ( - one (T) / 3 ))
158
158
end
159
159
end
160
160
end
@@ -186,7 +186,7 @@ function _airybiprime(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
186
186
airybi_power_series_cutoff (x, y) && return airybiprime_power_series (z)
187
187
188
188
if x > zero (T)
189
- zz = 2 * z^ ( T ( 3 ) / 2 ) / 3
189
+ zz = 2 * z * sqrt (z ) / 3
190
190
shift = 20
191
191
order = T (2 )/ 3
192
192
inu, inum1 = besseli_power_series_inu_inum1 (order + shift, zz)
@@ -198,12 +198,12 @@ function _airybiprime(z::ComplexOrReal{T}) where T <: Union{Float32, Float64}
198
198
else
199
199
if iszero (y)
200
200
xabs = abs (x)
201
- xx = 2 * xabs^ ( T ( 3 ) / 2 ) / 3
201
+ xx = 2 * xabs * sqrt (xabs ) / 3
202
202
Jv, Yv = besseljy_positive_args (T (2 )/ 3 , xx)
203
203
Jmv = - (Jv + sqrt (T (3 ))* Yv) / 2
204
204
return convert (eltype (z), xabs * (Jv + Jmv) / sqrt (T (3 )))
205
205
else
206
- return - (exp ( 2pi * im / 3 )* _airybiprime (- z* exp ( pi * im / 3 )) + exp ( - 2pi * im / 3 )* _airybiprime (- z* exp ( - pi * im / 3 )))
206
+ return - (cispi ( T ( 2 ) / 3 ) * _airybiprime (- z* cispi ( one (T) / 3 )) + cispi ( - T ( 2 ) / 3 ) * _airybiprime (- z* cispi ( - one (T) / 3 )))
207
207
end
208
208
end
209
209
end
@@ -443,7 +443,7 @@ function airy_large_arg_a(x::ComplexOrReal{T}; tol=eps(T)*40) where T
443
443
abs (t) < tol* abs (out) && break
444
444
t *= - 3 * (i + one (T)/ 6 ) * (i + T (5 )/ 6 ) / (a* (i + one (T)))
445
445
end
446
- return out * exp (- a / 6 ) / (π ^ (T (3 ) / 2 ) * sqrt (xsqr))
446
+ return out * exp (- a / 6 ) / (sqrt (T (π) ^ 3 ) * sqrt (xsqr))
447
447
end
448
448
449
449
function airy_large_arg_b (x:: ComplexOrReal{T} ; tol= eps (T)* 40 ) where T
@@ -459,7 +459,7 @@ function airy_large_arg_b(x::ComplexOrReal{T}; tol=eps(T)*40) where T
459
459
abs (t) < tol* abs (out) && break
460
460
t *= 3 * (i + one (T)/ 6 ) * (i + T (5 )/ 6 ) / (a* (i + one (T)))
461
461
end
462
- return out * exp (a / 6 ) / (π ^ (T (3 ) / 2 ) * sqrt (xsqr))
462
+ return out * exp (a / 6 ) / (sqrt (T (π) ^ 3 ) * sqrt (xsqr))
463
463
end
464
464
465
465
function airy_large_arg_c (x:: ComplexOrReal{T} ; tol= eps (T)* 40 ) where T
@@ -477,7 +477,7 @@ function airy_large_arg_c(x::ComplexOrReal{T}; tol=eps(T)*40) where T
477
477
abs (t) < tol* abs (out) && break
478
478
t *= - 3 * (i - one (T)/ 6 ) * (i + T (7 )/ 6 ) / (a* (i + one (T)))
479
479
end
480
- return out * exp (- a / 6 ) * sqrt (xsqr) / π ^ (T (3 ) / 2 )
480
+ return out * exp (- a / 6 ) * sqrt (xsqr) / sqrt (T (π) ^ 3 )
481
481
end
482
482
483
483
function airy_large_arg_d (x:: ComplexOrReal{T} ; tol= eps (T)* 40 ) where T
@@ -495,7 +495,7 @@ function airy_large_arg_d(x::ComplexOrReal{T}; tol=eps(T)*40) where T
495
495
abs (t) < tol* abs (out) && break
496
496
t *= 3 * (i - one (T)/ 6 ) * (i + T (7 )/ 6 ) / (a* (i + one (T)))
497
497
end
498
- return - out * exp (a / 6 ) * sqrt (xsqr) / π ^ (T (3 ) / 2 )
498
+ return - out * exp (a / 6 ) * sqrt (xsqr) / sqrt (T (π) ^ 3 )
499
499
end
500
500
501
501
# negative arguments of airy functions oscillate around zero so as x -> -Inf it is more prone to cancellation
0 commit comments