Skip to content

Commit 891deb8

Browse files
committed
use sincos for medium args
1 parent fdcfa40 commit 891deb8

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/besselj.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ function besselj1(x::Float64)
114114
p = evalpoly(z, PP_j1(T)) / evalpoly(z, PQ_j1(T))
115115
q = evalpoly(z, QP_j1(T)) / evalpoly(z, QQ_j1(T))
116116
xn = x - THPIO4(T)
117-
p = p * cos(xn) - w * q * sin(xn)
117+
sc = sincos(xn)
118+
p = p * sc[2] - w * q * sc[1]
118119
return p * SQ2OPI(T) / sqrt(x)
119120
else
120121
xinv = inv(x)

src/bessely.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ function _bessely0_compute(x::Float64)
2929
p = evalpoly(z, PP_y0(T)) / evalpoly(z, PQ_y0(T))
3030
q = evalpoly(z, QP_y0(T)) / evalpoly(z, QQ_y0(T))
3131
xn = x - PIO4(T)
32-
p = p * sin(xn) + w * q * cos(xn);
32+
sc = sincos(xn)
33+
p = p * sc[1] + w * q * sc[2]
3334
return p * SQ2OPI(T) / sqrt(x)
3435
else
3536
xinv = inv(x)
@@ -89,13 +90,14 @@ function _bessely1_compute(x::Float64)
8990
w = x * (evalpoly(z, YP_y1(T)) / evalpoly(z, YQ_y1(T)))
9091
w += TWOOPI(T) * (besselj1(x) * log(x) - inv(x))
9192
return w
92-
elseif x < 100.0
93+
elseif x < 75.0
9394
w = T(5) / x
9495
z = w * w
9596
p = evalpoly(z, PP_j1(T)) / evalpoly(z, PQ_j1(T))
9697
q = evalpoly(z, QP_j1(T)) / evalpoly(z, QQ_j1(T))
9798
xn = x - THPIO4(T)
98-
p = p * sin(xn) + w * q * cos(xn)
99+
sc = sincos(xn)
100+
p = p * sc[1] + w * q * sc[2]
99101
return p * SQ2OPI(T) / sqrt(x)
100102
else
101103
xinv = inv(x)

0 commit comments

Comments
 (0)