Skip to content

Commit 7d314b1

Browse files
committed
handle x = 0
1 parent 6bb4d23 commit 7d314b1

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

src/besselj.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,19 +158,19 @@ function besselj(nu::Real, x::T) where T
158158

159159
Jnu = besselj_positive_args(abs_nu, abs_x)
160160
if nu >= zero(T)
161-
return x >= zero(T) ? Jnu : cispi(abs_nu)*Jnu
161+
return x >= zero(T) ? Jnu : Jnu * cispi(abs_nu)
162162
else
163163
Ynu = bessely_positive_args(abs_nu, abs_x)
164164
spi, cpi = sincospi(abs_nu)
165-
out = cpi*Jnu - spi*Ynu
165+
out = Jnu * cpi - Ynu * spi
166166
return x >= zero(T) ? out : out * cispi(nu)
167167
end
168168
end
169169

170170
function besselj(nu::Int, x::T) where T
171171
abs_nu = abs(nu)
172172
abs_x = abs(x)
173-
sg = (iseven(Int(abs_nu)) ? 1 : -1)
173+
sg = iseven(Int(abs_nu)) ? 1 : -1
174174

175175
Jnu = besselj_positive_args(abs_nu, abs_x)
176176
if nu >= zero(T)

src/bessely.jl

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,24 +194,32 @@ function bessely(nu::Real, x::T) where T
194194
abs_x = abs(x)
195195

196196
Ynu = bessely_positive_args(abs_nu, abs_x)
197-
Jnu = besselj_positive_args(abs_nu, abs_x)
198197
spi, cpi = sincospi(abs_nu)
199198
if nu >= zero(T)
200-
return x >= zero(T) ? Ynu : cispi(-nu)*Ynu + 2im*cpi*Jnu
199+
if x >= zero(T)
200+
return Ynu
201+
else
202+
return Ynu * cispi(-nu) + 2im * besselj_positive_args(abs_nu, abs_x) * cpi
203+
end
201204
else
202-
return x >= zero(T) ? cpi*Ynu + spi*Jnu : cpi * (cispi(nu)*Ynu + 2im * cpi * Jnu) + spi * cispi(abs_nu) * Jnu
205+
Jnu = besselj_positive_args(abs_nu, abs_x)
206+
if x >= zero(T)
207+
return Ynu * cpi + Jnu * spi
208+
else
209+
return cpi * (Ynu * cispi(nu) + 2im * Jnu * cpi) + Jnu * spi * cispi(abs_nu)
210+
end
203211
end
204212
end
205213
function bessely(nu::Int, x::T) where T
206214
abs_nu = abs(nu)
207215
abs_x = abs(x)
208-
sg = (iseven(Int(abs_nu)) ? 1 : -1)
216+
sg = iseven(Int(abs_nu)) ? 1 : -1
209217

210218
Ynu = bessely_positive_args(abs_nu, abs_x)
211219
if nu >= zero(T)
212220
return x >= zero(T) ? Ynu : Ynu * sg + 2im * sg * besselj_positive_args(abs_nu, abs_x)
213221
elseif nu < zero(T)
214-
return x > zero(T) ? Ynu * sg : Ynu + 2im * besselj_positive_args(abs_nu, abs_x)
222+
return x >= zero(T) ? Ynu * sg : Ynu + 2im * besselj_positive_args(abs_nu, abs_x)
215223
end
216224
end
217225

0 commit comments

Comments
 (0)