Skip to content

Commit 5b99418

Browse files
committed
alternative using isnan
1 parent 2e642ea commit 5b99418

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/math/ops/op_dd_dd.jl

+4-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ function sqrt_dd_dd(x::Tuple{T,T}) where {T<:IEEEFloat}
6060
hi, lo = x
6161
(isnan(hi) | iszero(hi)) && return x
6262
signbit(hi) && throw(DomainError("sqrt(x) expects x >= 0"))
63-
issubnormal(hi) && return DoubleFloat{T}(sqrt(hi), zero(T))
6463

6564
half = T(0.5)
6665
dhalf = (half, zero(T))
@@ -81,6 +80,7 @@ function sqrt_dd_dd(x::Tuple{T,T}) where {T<:IEEEFloat}
8180
r = add_dddd_dd(r, radj)
8281

8382
r = mul_dddd_dd(r, x)
83+
isnan(HI(r)) && return DoubleFloat{T}(sqrt(hi), zero(T)) # subnormal numbers
8484

8585
return r
8686
end
@@ -100,7 +100,7 @@ invcuberootsquared(A) is found iteratively using Newton's method with a final ap
100100
=#
101101

102102
function cbrt_dd_dd(a::Tuple{T,T}) where {T<:IEEEFloat}
103-
issubnormal(HI(a)) && return DoubleFloat{T}(cbrt(HI(a)), zero(T))
103+
isnan(HI(a)) && return a
104104
a2 = mul_dddd_dd(a,a)
105105
one1 = one(T)
106106
onethird = (0.3333333333333333, 1.850371707708594e-17)
@@ -151,5 +151,7 @@ function cbrt_dd_dd(a::Tuple{T,T}) where {T<:IEEEFloat}
151151
amax3 = mul_dddd_dd(amax3, onethird)
152152

153153
ax = add_dddd_dd(ax, amax3)
154+
155+
isnan(HI(ax)) && return DoubleFloat{T}(cbrt(HI(a)), zero(T)) # subnormal numbers
154156
return ax
155157
end

0 commit comments

Comments
 (0)