diff --git a/base/abstractarraymath.jl b/base/abstractarraymath.jl index 7ac606f9724d5f..fb02a5f0e664e4 100644 --- a/base/abstractarraymath.jl +++ b/base/abstractarraymath.jl @@ -2,9 +2,8 @@ ## Basic functions ## -isreal(x::AbstractArray) = all(isreal,x) iszero(x::AbstractArray) = all(iszero,x) -isreal{T<:Real,n}(x::AbstractArray{T,n}) = true +all{T<:Real}(::typeof(isreal), ::AbstractArray{T}) = true all{T<:Integer}(::typeof(isinteger), ::AbstractArray{T}) = true ctranspose(a::AbstractArray) = error("ctranspose not implemented for $(typeof(a)). Consider adding parentheses, e.g. A*(B*C') instead of A*B*C' to avoid explicit calculation of the transposed matrix.") transpose(a::AbstractArray) = error("transpose not implemented for $(typeof(a)). Consider adding parentheses, e.g. A*(B*C.') instead of A*B*C' to avoid explicit calculation of the transposed matrix.") diff --git a/base/complex.jl b/base/complex.jl index 16cc55e87b3426..75dc72d6bdf07f 100644 --- a/base/complex.jl +++ b/base/complex.jl @@ -78,14 +78,11 @@ real{T<:Real}(::Type{Complex{T}}) = T """ isreal(x) -> Bool -Test whether `x` or all its elements are numerically equal to some real number. +Test whether `x` is numerically equal to some real number. ```jldoctest julia> isreal(5.) true - -julia> isreal([4.; complex(0,1)]) -false ``` """ isreal(x::Real) = true diff --git a/base/deprecated.jl b/base/deprecated.jl index a91ff22b75569b..bff68fe8bc8aab 100644 --- a/base/deprecated.jl +++ b/base/deprecated.jl @@ -1496,8 +1496,9 @@ function frexp{T<:AbstractFloat}(A::Array{T}) return (F, E) end -# Deprecate reducing isinteger over arrays +# Deprecate array-reducing isinteger and isreal @deprecate isinteger(A::AbstractArray) all(isinteger, A) +@deprecate isreal(A::AbstractArray) all(isreal, A) # Calling promote_op is likely a bad idea, so deprecate its convenience wrapper promote_eltype_op @deprecate promote_eltype_op(op, As...) promote_op(op, map(eltype, As)...) diff --git a/base/linalg/dense.jl b/base/linalg/dense.jl index b4098fc2ddedfc..ad6cd48ad7308b 100644 --- a/base/linalg/dense.jl +++ b/base/linalg/dense.jl @@ -509,7 +509,7 @@ function logm(A::StridedMatrix) end end - if isreal(A) && ~np_real_eigs + if all(isreal, A) && ~np_real_eigs return real(retmat) else return retmat diff --git a/base/linalg/diagonal.jl b/base/linalg/diagonal.jl index cf81a2206a85b4..4eedf7340cf52c 100644 --- a/base/linalg/diagonal.jl +++ b/base/linalg/diagonal.jl @@ -101,7 +101,7 @@ end parent(D::Diagonal) = D.diag ishermitian{T<:Real}(D::Diagonal{T}) = true -ishermitian(D::Diagonal) = isreal(D.diag) +ishermitian(D::Diagonal) = all(isreal, D.diag) issymmetric(D::Diagonal) = true isposdef(D::Diagonal) = all(x -> x > 0, D.diag) diff --git a/base/linalg/eigen.jl b/base/linalg/eigen.jl index 9a3e6e511c508a..c9aa2284174c85 100644 --- a/base/linalg/eigen.jl +++ b/base/linalg/eigen.jl @@ -23,7 +23,7 @@ function getindex(A::Union{Eigen,GeneralizedEigen}, d::Symbol) throw(KeyError(d)) end -isposdef(A::Union{Eigen,GeneralizedEigen}) = isreal(A.values) && all(x -> x > 0, A.values) +isposdef(A::Union{Eigen,GeneralizedEigen}) = all(isreal, A.values) && all(x -> x > 0, A.values) """ eigfact!(A, [B]) diff --git a/base/linalg/symmetric.jl b/base/linalg/symmetric.jl index 70a3bce514a153..8d2bbf5c4b96e7 100644 --- a/base/linalg/symmetric.jl +++ b/base/linalg/symmetric.jl @@ -169,9 +169,9 @@ end ishermitian(A::Hermitian) = true ishermitian{T<:Real,S}(A::Symmetric{T,S}) = true -ishermitian{T<:Complex,S}(A::Symmetric{T,S}) = isreal(A.data) +ishermitian{T<:Complex,S}(A::Symmetric{T,S}) = all(isreal, A.data) issymmetric{T<:Real,S}(A::Hermitian{T,S}) = true -issymmetric{T<:Complex,S}(A::Hermitian{T,S}) = isreal(A.data) +issymmetric{T<:Complex,S}(A::Hermitian{T,S}) = all(isreal, A.data) issymmetric(A::Symmetric) = true transpose(A::Symmetric) = A ctranspose{T<:Real}(A::Symmetric{T}) = A diff --git a/base/linalg/triangular.jl b/base/linalg/triangular.jl index a0eda4499fdf64..4fc1343ad3e1fb 100644 --- a/base/linalg/triangular.jl +++ b/base/linalg/triangular.jl @@ -1828,7 +1828,7 @@ logm(A::LowerTriangular) = logm(A.').' function sqrtm{T}(A::UpperTriangular{T}) n = checksquare(A) realmatrix = false - if isreal(A) + if all(isreal, A) realmatrix = true for i = 1:n if real(A[i,i]) < 0 diff --git a/test/abstractarray.jl b/test/abstractarray.jl index 9e4de03aa0351a..385d62f01bea93 100644 --- a/test/abstractarray.jl +++ b/test/abstractarray.jl @@ -748,7 +748,7 @@ end # isinteger and isreal @test all(isinteger, Diagonal(rand(1:5, 5))) # reducing isinteger(...) deprecated -@test isreal(Diagonal(rand(5))) +@test all(isreal, Diagonal(rand(5))) # reducing isreal(...) deprecated # unary ops let A = Diagonal(rand(1:5,5)) diff --git a/test/linalg/cholesky.jl b/test/linalg/cholesky.jl index eb30eed5736a44..22d5ed2f4b9a85 100644 --- a/test/linalg/cholesky.jl +++ b/test/linalg/cholesky.jl @@ -129,7 +129,7 @@ for eltya in (Float32, Float64, Complex64, Complex128, BigFloat, Int) cpapd = cholfact(apd, :U, Val{true}) @test rank(cpapd) == n @test all(diff(diag(real(cpapd.factors))).<=0.) # diagonal should be non-increasing - if isreal(apd) + if all(isreal, apd) @test apd*inv(cpapd) ≈ eye(n) end @test full(cpapd) ≈ apd