diff --git a/base/complex.jl b/base/complex.jl index f1cc868cf468a..b005d728ef87c 100644 --- a/base/complex.jl +++ b/base/complex.jl @@ -37,6 +37,9 @@ reim(z) = (real(z), imag(z)) real{T<:Real}(::Type{T}) = T real{T<:Real}(::Type{Complex{T}}) = T +complex{T<:Real}(::Type{T}) = Complex{T} +complex{T<:Real}(::Type{Complex{T}}) = Complex{T} + isreal(x::Real) = true isreal(z::Complex) = imag(z) == 0 isimag(z::Number) = real(z) == 0 diff --git a/test/complex.jl b/test/complex.jl index de1aaeb506c80..d9fe38d12ae22 100644 --- a/test/complex.jl +++ b/test/complex.jl @@ -2,6 +2,13 @@ @test reim(2 + 3im) == (2, 3) +for T in (Int64, Float64) + @test real(T) == T + @test real(Complex{T}) == T + @test complex(T) == Complex{T} + @test complex(Complex{T}) == Complex{T} +end + # Basic arithmetic for T in (Float16, Float32, Float64, BigFloat) t = true