diff --git a/src/dual.jl b/src/dual.jl index 0812821..c9ba3ad 100644 --- a/src/dual.jl +++ b/src/dual.jl @@ -179,6 +179,7 @@ Base.hash(z::Dual) = (x = hash(value(z)); epsilon(z)==0 ? x : bitmix(x,hash(epsi Base.float(z::Union{Dual{T}, Dual{Complex{T}}}) where {T<:AbstractFloat} = z Base.complex(z::Dual{<:Complex}) = z +Base.complex(::Type{Dual{R}}) where {R} = Dual{complex(R)} Base.floor(z::Dual) = floor(value(z)) Base.ceil(z::Dual) = ceil(value(z)) diff --git a/test/runtests.jl b/test/runtests.jl index 9ff3071..940337a 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -9,3 +9,12 @@ using Test module TestAutomaticDifferentiation include("automatic_differentiation_test.jl") end + +@testset "complex" begin + for T in [Float16, Float32, Float64, BigFloat, Int8, Int16, Int32, Int64, Int128, BigInt, Bool] + D = Dual{T} + @test typeof(complex(zero(D))) == complex(D) + D = Dual{Complex{T}} + @test typeof(complex(zero(D))) == complex(D) + end +end