Skip to content

Commit e52825a

Browse files
committed
Deprecate manually vectorized imag methods in favor of compact broadcast syntax.
1 parent 3a31155 commit e52825a

20 files changed

+50
-32
lines changed

base/abstractarraymath.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ conj{T<:Real}(x::AbstractArray{T}) = x
8686
conj!{T<:Real}(x::AbstractArray{T}) = x
8787

8888
real{T<:Real}(x::AbstractArray{T}) = x
89-
imag{T<:Real}(x::AbstractArray{T}) = zero(x)
89+
broadcast{T<:Real}(::typeof(imag), x::AbstractArray{T}) = zero(x)
9090

9191
+{T<:Number}(x::AbstractArray{T}) = x
9292
*{T<:Number}(x::AbstractArray{T,2}) = x

base/arraymath.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ end
3131
(-)(A::AbstractArray{Bool}) = reshape([ -A[i] for i in eachindex(A) ], size(A))
3232

3333
real(A::AbstractArray) = reshape([ real(x) for x in A ], size(A))
34-
imag(A::AbstractArray) = reshape([ imag(x) for x in A ], size(A))
3534

3635
function !(A::AbstractArray{Bool})
3736
F = similar(A)

base/broadcast.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ module Broadcast
55
using Base.Cartesian
66
using Base: promote_eltype_op, @get!, _msk_end, unsafe_bitgetindex, linearindices, tail, OneTo, to_shape
77
import Base: .+, .-, .*, ./, .\, .//, .==, .<, .!=, .<=, , .%, .<<, .>>, .^
8-
export broadcast, broadcast!, bitbroadcast, dotview
8+
import Base: broadcast
9+
export broadcast!, bitbroadcast, dotview
910
export broadcast_getindex, broadcast_setindex!
1011

1112
## Broadcasting utilities ##

base/deprecated.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,4 +1000,7 @@ macro vectorize_2arg(S,f)
10001000
end
10011001
export @vectorize_1arg, @vectorize_2arg
10021002

1003+
# Deprecate manually vectorized imag methods in favor of compact broadcast syntax
1004+
@deprecate imag(A::AbstractArray) imag.(A)
1005+
10031006
# End deprecations scheduled for 0.6

base/linalg/arpack.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ function eupd_wrapper(T, n::Integer, sym::Bool, cmplx::Bool, bmat::String,
122122
elseif which == "SR" || which == "SA"
123123
dmap = x->-real(x)
124124
elseif which == "LI"
125-
dmap = imag
125+
dmap = x -> imag.(x)
126126
elseif which == "SI"
127-
dmap = x->-imag(x)
127+
dmap = x -> (-).(imag.(x))
128128
end
129129

130130
if cmplx

base/linalg/bidiag.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ function size(M::Bidiagonal, d::Integer)
189189
end
190190

191191
#Elementary operations
192-
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :real, :imag, :abs)
192+
broadcast(::typeof(imag), M::Bidiagonal) = Bidiagonal(imag.(M.dv), imag.(M.ev), M.isupper)
193+
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :real, :abs)
193194
@eval ($func)(M::Bidiagonal) = Bidiagonal(($func)(M.dv), ($func)(M.ev), M.isupper)
194195
end
195196
for func in (:round, :trunc, :floor, :ceil)

base/linalg/diagonal.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ factorize(D::Diagonal) = D
7979

8080
abs(D::Diagonal) = Diagonal(abs(D.diag))
8181
real(D::Diagonal) = Diagonal(real(D.diag))
82-
imag(D::Diagonal) = Diagonal(imag(D.diag))
82+
broadcast(::typeof(imag), D::Diagonal) = Diagonal(imag.(D.diag))
8383

8484
istriu(D::Diagonal) = true
8585
istril(D::Diagonal) = true

base/linalg/symmetric.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ copy{T,S}(A::Symmetric{T,S}) = (B = copy(A.data); Symmetric{T,typeof(B)}(B,A.upl
9797
copy{T,S}(A::Hermitian{T,S}) = (B = copy(A.data); Hermitian{T,typeof(B)}(B,A.uplo))
9898
ishermitian(A::Hermitian) = true
9999
ishermitian{T<:Real,S}(A::Symmetric{T,S}) = true
100-
ishermitian{T<:Complex,S}(A::Symmetric{T,S}) = all(imag(A.data) .== 0)
100+
ishermitian{T<:Complex,S}(A::Symmetric{T,S}) = all(imag.(A.data) .== 0)
101101
issymmetric{T<:Real,S}(A::Hermitian{T,S}) = true
102-
issymmetric{T<:Complex,S}(A::Hermitian{T,S}) = all(imag(A.data) .== 0)
102+
issymmetric{T<:Complex,S}(A::Hermitian{T,S}) = all(imag.(A.data) .== 0)
103103
issymmetric(A::Symmetric) = true
104104
transpose(A::Symmetric) = A
105105
ctranspose{T<:Real}(A::Symmetric{T}) = A

base/linalg/triangular.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ end
4343
LowerTriangular(U::UpperTriangular) = throw(ArgumentError("cannot create a LowerTriangular matrix from an UpperTriangular input"))
4444
UpperTriangular(U::LowerTriangular) = throw(ArgumentError("cannot create an UpperTriangular matrix from a LowerTriangular input"))
4545

46-
imag(A::UpperTriangular) = UpperTriangular(imag(A.data))
47-
imag(A::LowerTriangular) = LowerTriangular(imag(A.data))
48-
imag(A::UnitLowerTriangular) = LowerTriangular(tril!(imag(A.data),-1))
49-
imag(A::UnitUpperTriangular) = UpperTriangular(triu!(imag(A.data),1))
46+
broadcast(::typeof(imag), A::UpperTriangular) = UpperTriangular(imag.(A.data))
47+
broadcast(::typeof(imag), A::LowerTriangular) = LowerTriangular(imag.(A.data))
48+
broadcast(::typeof(imag), A::UnitLowerTriangular) = LowerTriangular(tril!(imag.(A.data), -1))
49+
broadcast(::typeof(imag), A::UnitUpperTriangular) = UpperTriangular(triu!(imag.(A.data), 1))
5050

5151
convert(::Type{Array}, A::AbstractTriangular) = convert(Matrix, A)
5252
full(A::AbstractTriangular) = convert(Array, A)

base/linalg/tridiag.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ end
7171
similar{T}(S::SymTridiagonal, ::Type{T}) = SymTridiagonal{T}(similar(S.dv, T), similar(S.ev, T))
7272

7373
#Elementary operations
74-
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :abs, :real, :imag)
74+
broadcast(::typeof(imag), M::SymTridiagonal) = SymTridiagonal(imag.(M.dv), imag.(M.ev))
75+
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :abs, :real)
7576
@eval ($func)(M::SymTridiagonal) = SymTridiagonal(($func)(M.dv), ($func)(M.ev))
7677
end
7778
for func in (:round, :trunc, :floor, :ceil)
@@ -388,7 +389,8 @@ end
388389
copy!(dest::Tridiagonal, src::Tridiagonal) = Tridiagonal(copy!(dest.dl, src.dl), copy!(dest.d, src.d), copy!(dest.du, src.du), copy!(dest.du2, src.du2))
389390

390391
#Elementary operations
391-
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :abs, :real, :imag)
392+
broadcast(::typeof(imag), M::Tridiagonal) = Tridiagonal(imag.(M.dl), imag.(M.d), imag.(M.du), imag.(M.du2))
393+
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :abs, :real)
392394
@eval function ($func)(M::Tridiagonal)
393395
Tridiagonal(($func)(M.dl), ($func)(M.d), ($func)(M.du), ($func)(M.du2))
394396
end

0 commit comments

Comments
 (0)