@@ -163,7 +163,7 @@ function _besselj(nu, x)
163
163
x < 4.0 && return besselj_small_arguments_orders (nu, x)
164
164
165
165
large_arg_cutoff = 1.65 * nu
166
- (x > large_arg_cutoff && x > 20.0 ) && return besselj_large_argument (nu, x)
166
+ (x > large_arg_cutoff && x > 20.0 ) && return besseljy_large_argument (nu, x)[ 1 ]
167
167
168
168
169
169
debye_cutoff = 2.0 + 1.00035 * x + (302.681 * x)^ (1 / 3 )
@@ -190,8 +190,8 @@ function _besselj(nu, x)
190
190
if (debye_diff > large_arg_diff && x > 20.0 )
191
191
nu_shift = ceil (large_arg_diff)
192
192
v2 = nu - nu_shift
193
- jnu = besselj_large_argument (v2, x)
194
- jnum1 = besselj_large_argument (v2 - 1 , x)
193
+ jnu = besseljy_large_argument (v2, x)[ 1 ]
194
+ jnum1 = besseljy_large_argument (v2 - 1 , x)[ 1 ]
195
195
return besselj_up_recurrence (x, jnu, jnum1, v2, nu)[2 ]
196
196
else
197
197
nu_shift = ceil (Int, debye_diff)
@@ -203,20 +203,6 @@ function _besselj(nu, x)
203
203
end
204
204
end
205
205
206
- # for moderate size arguments of x and v this has relative errors ~9e-15
207
- # for large arguments relative errors ~1e-13
208
- function besselj_large_argument (v, x:: T ) where T
209
- α, αp = _α_αp_asymptotic (v, x)
210
- b = SQ2OPI (T) / sqrt (αp * x)
211
-
212
- S, C = sincos (PIO2 (T)* v)
213
- Sα, Cα = sincos (α)
214
- s1 = (C - S) * Cα
215
- s2 = (C + S) * Sα
216
-
217
- return SQ2O2 (T) * (s1 + s2) * b
218
- end
219
-
220
206
# generally can only use for x < 4.0
221
207
# this needs a better way to sum these as it produces large errors
222
208
# only valid in non-oscillatory regime (v>1/2, 0<t<sqrt(v^2 - 0.25))
0 commit comments