Skip to content

Commit aebf3ac

Browse files
Sacha0tkelman
authored andcommitted
Deprecate manually vectorized abs methods in favor of compact broadcast syntax. (#18558)
1 parent c485fc0 commit aebf3ac

File tree

11 files changed

+26
-13
lines changed

11 files changed

+26
-13
lines changed

base/bitarray.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -996,7 +996,7 @@ function empty!(B::BitVector)
996996
end
997997

998998
## Misc functions
999-
abs(B::BitArray) = copy(B)
999+
broadcast(::typeof(abs), B::BitArray) = copy(B)
10001000

10011001
## Unary operators ##
10021002

base/broadcast.jl

+2-1
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

+9
Original file line numberDiff line numberDiff line change
@@ -1000,4 +1000,13 @@ macro vectorize_2arg(S,f)
10001000
end
10011001
export @vectorize_1arg, @vectorize_2arg
10021002

1003+
# Devectorize manually vectorized abs methods in favor of compact broadcast syntax
1004+
@deprecate abs(f::Base.Pkg.Resolve.MaxSum.Field) abs.(f)
1005+
@deprecate abs(B::BitArray) abs.(B)
1006+
@deprecate abs(M::Bidiagonal) abs.(M)
1007+
@deprecate abs(D::Diagonal) abs.(D)
1008+
@deprecate abs(M::Tridiagonal) abs.(M)
1009+
@deprecate abs(M::SymTridiagonal) abs.(M)
1010+
@deprecate abs(x::AbstractSparseVector) abs.(x)
1011+
10031012
# End deprecations scheduled for 0.6

base/linalg/bidiag.jl

+2-1
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(abs), M::Bidiagonal) = Bidiagonal(abs.(M.dv), abs.(M.ev), abs.(M.isupper))
193+
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :real, :imag)
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

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ isposdef(D::Diagonal) = all(D.diag .> 0)
7777

7878
factorize(D::Diagonal) = D
7979

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

base/linalg/tridiag.jl

+4-2
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(abs), M::SymTridiagonal) = SymTridiagonal(abs.(M.dv), abs.(M.ev))
75+
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :real, :imag)
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(abs), M::Tridiagonal) = Tridiagonal(abs.(M.dl), abs.(M.d), abs.(M.du), abs.(M.du2))
393+
for func in (:conj, :copy, :round, :trunc, :floor, :ceil, :real, :imag)
392394
@eval function ($func)(M::Tridiagonal)
393395
Tridiagonal(($func)(M.dl), ($func)(M.d), ($func)(M.du), ($func)(M.du2))
394396
end

base/pkg/resolve/fieldvalue.jl

-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ end
6262
a.l0 == b.l0 && a.l1 == b.l1 && a.l2 == b.l2 && a.l3 == b.l3 && a.l4 == b.l4
6363

6464
Base.abs(a::FieldValue) = FieldValue(abs(a.l0), abs(a.l1), abs(a.l2), abs(a.l3), abs(a.l4))
65-
Base.abs(f::Field) = FieldValue[abs(a) for a in f]
6665

6766
# if the maximum field has l0 < 0, it means that
6867
# some hard constraint is being violated

base/pkg/resolve/maxsum.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ function update(p0::Int, graph::Graph, msgs::Messages)
329329
end
330330

331331
diff = newmsg - oldmsg
332-
maxdiff = max(maxdiff, maximum(abs(diff)))
332+
maxdiff = max(maxdiff, maximum(abs.(diff)))
333333

334334
# update the field of p1
335335
fld1 = fld[p1]

base/sparse/sparsevector.jl

+2-1
Original file line numberDiff line numberDiff line change
@@ -912,7 +912,8 @@ hvcat{T}(rows::Tuple{Vararg{Int}}, xs::_TypedDenseConcatGroup{T}...) = Base.type
912912
### Unary Map
913913

914914
# zero-preserving functions (z->z, nz->nz)
915-
for op in [:abs, :abs2, :conj]
915+
broadcast(::typeof(abs), x::AbstractSparseVector) = SparseVector(length(x), copy(nonzeroinds(x)), abs.(nonzeros(x)))
916+
for op in [:abs2, :conj]
916917
@eval begin
917918
$(op)(x::AbstractSparseVector) =
918919
SparseVector(length(x), copy(nonzeroinds(x)), $(op).(nonzeros(x)))

test/perf/kernel/gk.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ function gk(n, myeps)
123123

124124
AX=A*X
125125
Ax = A*x
126-
error=abs(AX)-abs(U)
126+
error=abs.(AX)-abs.(U)
127127
#print(Ax)
128128

129129
Axepse=0

test/sparsedir/sparsevector.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ let x = spv_x1, x2 = x2 = spv_x2
559559
@test exact_equal(-x, SparseVector(8, [2, 5, 6], [-1.25, 0.75, -3.5]))
560560

561561
# abs and abs2
562-
@test exact_equal(abs(x), SparseVector(8, [2, 5, 6], abs.([1.25, -0.75, 3.5])))
562+
@test exact_equal(abs.(x), SparseVector(8, [2, 5, 6], abs.([1.25, -0.75, 3.5])))
563563
@test exact_equal(abs2(x), SparseVector(8, [2, 5, 6], abs2.([1.25, -0.75, 3.5])))
564564

565565
# plus and minus
@@ -683,12 +683,12 @@ let x = spv_x1
683683
@test minabs(x) == 0.0
684684
end
685685

686-
let x = abs(spv_x1)
686+
let x = abs.(spv_x1)
687687
@test maximum(x) == 3.5
688688
@test minimum(x) == 0.0
689689
end
690690

691-
let x = -abs(spv_x1)
691+
let x = -abs.(spv_x1)
692692
@test maximum(x) == 0.0
693693
@test minimum(x) == -3.5
694694
end

0 commit comments

Comments
 (0)