@@ -81,7 +81,7 @@ IndexStyle(::Type{<:BitArray}) = IndexLinear()
81
81
82
82
# # aux functions ##
83
83
84
- const _msk64 = ~ UInt64 (0 )
84
+ const _msk64 = ! UInt64 (0 )
85
85
@inline _div64 (l) = l >> 6
86
86
@inline _mod64 (l) = l & 63
87
87
@inline _msk_end (l:: Integer ) = _msk64 >>> _mod64 (- l)
@@ -94,7 +94,7 @@ function glue_src_bitchunks(src::Vector{UInt64}, k::Int, ks1::Int, msk_s0::UInt6
94
94
@inbounds begin
95
95
chunk = ((src[k] & msk_s0) >>> ls0)
96
96
if ks1 > k && ls0 > 0
97
- chunk_n = (src[k + 1 ] & ~ msk_s0)
97
+ chunk_n = (src[k + 1 ] & ! msk_s0)
98
98
chunk |= (chunk_n << (64 - ls0))
99
99
end
100
100
end
@@ -117,20 +117,20 @@ function copy_chunks!(dest::Vector{UInt64}, pos_d::Integer, src::Vector{UInt64},
117
117
118
118
u = _msk64
119
119
if delta_kd == 0
120
- msk_d0 = ~ (u << ld0) | (u << (ld1+ 1 ))
120
+ msk_d0 = ! (u << ld0) | (u << (ld1+ 1 ))
121
121
else
122
- msk_d0 = ~ (u << ld0)
122
+ msk_d0 = ! (u << ld0)
123
123
msk_d1 = (u << (ld1+ 1 ))
124
124
end
125
125
if delta_ks == 0
126
- msk_s0 = (u << ls0) & ~ (u << (ls1+ 1 ))
126
+ msk_s0 = (u << ls0) & ! (u << (ls1+ 1 ))
127
127
else
128
128
msk_s0 = (u << ls0)
129
129
end
130
130
131
131
chunk_s0 = glue_src_bitchunks (src, ks0, ks1, msk_s0, ls0)
132
132
133
- dest[kd0] = (dest[kd0] & msk_d0) | ((chunk_s0 << ld0) & ~ msk_d0)
133
+ dest[kd0] = (dest[kd0] & msk_d0) | ((chunk_s0 << ld0) & ! msk_d0)
134
134
135
135
delta_kd == 0 && return
136
136
@@ -152,7 +152,7 @@ function copy_chunks!(dest::Vector{UInt64}, pos_d::Integer, src::Vector{UInt64},
152
152
153
153
chunk_s = (chunk_s0 >>> (64 - ld0)) | (chunk_s1 << ld0)
154
154
155
- dest[kd1] = (dest[kd1] & msk_d1) | (chunk_s & ~ msk_d1)
155
+ dest[kd1] = (dest[kd1] & msk_d1) | (chunk_s & ! msk_d1)
156
156
157
157
return
158
158
end
@@ -177,24 +177,24 @@ function copy_chunks_rtol!(chunks::Vector{UInt64}, pos_d::Integer, pos_s::Intege
177
177
delta_ks = ks1 - ks0
178
178
179
179
if delta_kd == 0
180
- msk_d0 = ~ (u << ld0) | (u << (ld1+ 1 ))
180
+ msk_d0 = ! (u << ld0) | (u << (ld1+ 1 ))
181
181
else
182
- msk_d0 = ~ (u << ld0)
182
+ msk_d0 = ! (u << ld0)
183
183
msk_d1 = (u << (ld1+ 1 ))
184
184
end
185
185
if delta_ks == 0
186
- msk_s0 = (u << ls0) & ~ (u << (ls1+ 1 ))
186
+ msk_s0 = (u << ls0) & ! (u << (ls1+ 1 ))
187
187
else
188
188
msk_s0 = (u << ls0)
189
189
end
190
190
191
- chunk_s0 = glue_src_bitchunks (chunks, ks0, ks1, msk_s0, ls0) & ~ (u << s)
192
- chunks[kd0] = (chunks[kd0] & msk_d0) | ((chunk_s0 << ld0) & ~ msk_d0)
191
+ chunk_s0 = glue_src_bitchunks (chunks, ks0, ks1, msk_s0, ls0) & ! (u << s)
192
+ chunks[kd0] = (chunks[kd0] & msk_d0) | ((chunk_s0 << ld0) & ! msk_d0)
193
193
194
194
if delta_kd != 0
195
195
chunk_s = (chunk_s0 >>> (64 - ld0))
196
196
197
- chunks[kd1] = (chunks[kd1] & msk_d1) | (chunk_s & ~ msk_d1)
197
+ chunks[kd1] = (chunks[kd1] & msk_d1) | (chunk_s & ! msk_d1)
198
198
end
199
199
200
200
left -= s
@@ -212,10 +212,10 @@ function fill_chunks!(Bc::Array{UInt64}, x::Bool, pos::Integer, numbits::Integer
212
212
213
213
u = _msk64
214
214
if k1 == k0
215
- msk0 = (u << l0) & ~ (u << (l1+ 1 ))
215
+ msk0 = (u << l0) & ! (u << (l1+ 1 ))
216
216
else
217
217
msk0 = (u << l0)
218
- msk1 = ~ (u << (l1+ 1 ))
218
+ msk1 = ! (u << (l1+ 1 ))
219
219
end
220
220
@inbounds if x
221
221
Bc[k0] |= msk0
@@ -224,11 +224,11 @@ function fill_chunks!(Bc::Array{UInt64}, x::Bool, pos::Integer, numbits::Integer
224
224
end
225
225
k1 > k0 && (Bc[k1] |= msk1)
226
226
else
227
- Bc[k0] &= ~ msk0
227
+ Bc[k0] &= ! msk0
228
228
for k = k0+ 1 : k1- 1
229
229
Bc[k] = 0
230
230
end
231
- k1 > k0 && (Bc[k1] &= ~ msk1)
231
+ k1 > k0 && (Bc[k1] &= ! msk1)
232
232
end
233
233
end
234
234
@@ -253,10 +253,10 @@ function copy_to_bitarray_chunks!(Bc::Vector{UInt64}, pos_d::Int, C::Array{Bool}
253
253
254
254
u = _msk64
255
255
if delta_kd == 0
256
- msk_d0 = msk_d1 = ~ (u << ld0) | (u << (ld1+ 1 ))
256
+ msk_d0 = msk_d1 = ! (u << ld0) | (u << (ld1+ 1 ))
257
257
lt0 = ld1
258
258
else
259
- msk_d0 = ~ (u << ld0)
259
+ msk_d0 = ! (u << ld0)
260
260
msk_d1 = (u << (ld1+ 1 ))
261
261
lt0 = 63
262
262
end
@@ -269,7 +269,7 @@ function copy_to_bitarray_chunks!(Bc::Vector{UInt64}, pos_d::Int, C::Array{Bool}
269
269
c |= (UInt64 (C[ind]) << j)
270
270
ind += 1
271
271
end
272
- Bc[kd0] = (Bc[kd0] & msk_d0) | (c & ~ msk_d0)
272
+ Bc[kd0] = (Bc[kd0] & msk_d0) | (c & ! msk_d0)
273
273
bind += 1
274
274
end
275
275
@@ -306,7 +306,7 @@ function copy_to_bitarray_chunks!(Bc::Vector{UInt64}, pos_d::Int, C::Array{Bool}
306
306
c |= (UInt64 (C[ind]) << j)
307
307
ind += 1
308
308
end
309
- Bc[kd1] = (Bc[kd1] & msk_d1) | (c & ~ msk_d1)
309
+ Bc[kd1] = (Bc[kd1] & msk_d1) | (c & ! msk_d1)
310
310
end
311
311
end
312
312
@@ -408,7 +408,7 @@ function copyto!(dest::BitArray, src::BitArray)
408
408
destc[nc] = srcc[nc]
409
409
else
410
410
msk_s = _msk_end (src)
411
- msk_d = ~ msk_s
411
+ msk_d = ! msk_s
412
412
destc[nc] = (msk_d & destc[nc]) | (msk_s & srcc[nc])
413
413
end
414
414
end
634
634
u = UInt64 (1 ) << i2
635
635
@inbounds begin
636
636
c = Bc[i1]
637
- Bc[i1] = ifelse (x, c | u, c & ~ u)
637
+ Bc[i1] = ifelse (x, c | u, c & ! u)
638
638
end
639
639
end
640
640
@@ -676,7 +676,7 @@ function _unsafe_setindex!(B::BitArray, x, I::BitArray)
676
676
end
677
677
else
678
678
for i = 1 : length (Bc)
679
- Bc[i] &= ~ Ic[i]
679
+ Bc[i] &= ! Ic[i]
680
680
end
681
681
end
682
682
return B
@@ -705,7 +705,7 @@ function _unsafe_setindex!(B::BitArray, X::AbstractArray, I::BitArray)
705
705
if Imsk & u != 0
706
706
lx < c && throw_setindex_mismatch (X, c)
707
707
@inbounds x = convert (Bool, X[c])
708
- C = ifelse (x, C | u, C & ~ u)
708
+ C = ifelse (x, C | u, C & ! u)
709
709
c += 1
710
710
end
711
711
u <<= 1
@@ -879,7 +879,7 @@ function insert!(B::BitVector, i::Integer, item)
879
879
end
880
880
881
881
msk_aft = (_msk64 << j)
882
- msk_bef = ~ msk_aft
882
+ msk_bef = ! msk_aft
883
883
Bc[k] = (msk_bef & Bc[k]) | ((msk_aft & Bc[k]) << 1 )
884
884
B[i] = item
885
885
B
@@ -889,7 +889,7 @@ function _deleteat!(B::BitVector, i::Integer)
889
889
k, j = get_chunks_id (i)
890
890
891
891
msk_bef = _msk64 >>> (63 - j)
892
- msk_aft = ~ msk_bef
892
+ msk_aft = ! msk_bef
893
893
msk_bef >>>= 1
894
894
895
895
Bc = B. chunks
@@ -1088,23 +1088,26 @@ function (-)(B::BitArray)
1088
1088
end
1089
1089
broadcast (:: typeof (sign), B:: BitArray ) = copy (B)
1090
1090
1091
- function broadcast (:: typeof (~ ), B:: BitArray )
1091
+ function broadcast (:: typeof (! ), B:: BitArray )
1092
1092
C = similar (B)
1093
1093
Bc = B. chunks
1094
1094
if ! isempty (Bc)
1095
1095
Cc = C. chunks
1096
1096
for i = 1 : length (Bc)
1097
- Cc[i] = ~ Bc[i]
1097
+ Cc[i] = ! Bc[i]
1098
1098
end
1099
1099
Cc[end ] &= _msk_end (B)
1100
1100
end
1101
1101
return C
1102
1102
end
1103
+ broadcast (:: typeof (~ ), B:: BitArray ) = broadcast (! , B) # TODO deprecate
1104
+
1105
+
1103
1106
1104
1107
"""
1105
1108
flipbits!(B::BitArray{N}) -> BitArray{N}
1106
1109
1107
- Performs a bitwise not operation on `B`. See [`~ `](@ref).
1110
+ Performs a bitwise not operation on `B`. See [`! `](@ref).
1108
1111
1109
1112
# Examples
1110
1113
```jldoctest
@@ -1123,7 +1126,7 @@ function flipbits!(B::BitArray)
1123
1126
Bc = B. chunks
1124
1127
@inbounds if ! isempty (Bc)
1125
1128
for i = 1 : length (Bc)
1126
- Bc[i] = ~ Bc[i]
1129
+ Bc[i] = ! Bc[i]
1127
1130
end
1128
1131
Bc[end ] &= _msk_end (B)
1129
1132
end
@@ -1162,7 +1165,7 @@ broadcast(::typeof(&), B::BitArray, x::Bool) = x ? copy(B) : falses(size(B))
1162
1165
broadcast (:: typeof (& ), x:: Bool , B:: BitArray ) = broadcast (& , B, x)
1163
1166
broadcast (:: typeof (| ), B:: BitArray , x:: Bool ) = x ? trues (size (B)) : copy (B)
1164
1167
broadcast (:: typeof (| ), x:: Bool , B:: BitArray ) = broadcast (| , B, x)
1165
- broadcast (:: typeof (xor), B:: BitArray , x:: Bool ) = x ? .~ B : copy (B)
1168
+ broadcast (:: typeof (xor), B:: BitArray , x:: Bool ) = x ? .! B : copy (B)
1166
1169
broadcast (:: typeof (xor), x:: Bool , B:: BitArray ) = broadcast (xor, B, x)
1167
1170
for f in (:& , :| , :xor )
1168
1171
@eval begin
@@ -1471,7 +1474,7 @@ end
1471
1474
1472
1475
# findfirst(B::BitArray) = findnext(B, 1) ## defined in array.jl
1473
1476
1474
- # aux function: same as findnext(~ B, start), but performed without temporaries
1477
+ # aux function: same as findnext(! B, start), but performed without temporaries
1475
1478
function findnextnot (B:: BitArray , start:: Integer )
1476
1479
start > 0 || throw (BoundsError (B, start))
1477
1480
start > length (B) && return 0
@@ -1482,7 +1485,7 @@ function findnextnot(B::BitArray, start::Integer)
1482
1485
1483
1486
chunk_start = _div64 (start- 1 )+ 1
1484
1487
within_chunk_start = _mod64 (start- 1 )
1485
- mask = ~ (_msk64 << within_chunk_start)
1488
+ mask = ! (_msk64 << within_chunk_start)
1486
1489
1487
1490
@inbounds if chunk_start < l
1488
1491
if Bc[chunk_start] | mask != _msk64
@@ -1557,7 +1560,7 @@ function findprevnot(B::BitArray, start::Integer)
1557
1560
Bc = B. chunks
1558
1561
1559
1562
chunk_start = _div64 (start- 1 )+ 1
1560
- mask = ~ _msk_end (start)
1563
+ mask = ! _msk_end (start)
1561
1564
1562
1565
@inbounds begin
1563
1566
if Bc[chunk_start] | mask != _msk64
@@ -1688,24 +1691,27 @@ maximum(B::BitArray) = isempty(B) ? throw(ArgumentError("argument must be non-em
1688
1691
# arrays since there can be a 64x speedup by working at the level of Int64
1689
1692
# instead of looping bit-by-bit.
1690
1693
1691
- map (:: Union{typeof(~), typeof(!)} , A:: BitArray ) = bit_map! (~ , similar (A), A)
1694
+ map (:: typeof (! ), A:: BitArray ) = bit_map! (! , similar (A), A)
1695
+ map (:: typeof (~ ), A:: BitArray ) = map (! , A) # TODO deprecate
1692
1696
map (:: typeof (zero), A:: BitArray ) = fill! (similar (A), false )
1693
1697
map (:: typeof (one), A:: BitArray ) = fill! (similar (A), true )
1694
1698
map (:: typeof (identity), A:: BitArray ) = copy (A)
1695
1699
1696
- map! (:: Union{typeof(~), typeof(!)} , dest:: BitArray , A:: BitArray ) = bit_map! (~ , dest, A)
1700
+ map! (:: typeof (! ), dest:: BitArray , A:: BitArray ) = bit_map! (! , dest, A)
1701
+ map! (:: typeof (~ ), dest:: BitArray , A:: BitArray ) = map (! , dest, A) # TODO deprecate
1702
+
1697
1703
map! (:: typeof (zero), dest:: BitArray , A:: BitArray ) = fill! (dest, false )
1698
1704
map! (:: typeof (one), dest:: BitArray , A:: BitArray ) = fill! (dest, true )
1699
1705
map! (:: typeof (identity), dest:: BitArray , A:: BitArray ) = copyto! (dest, A)
1700
1706
1701
1707
for (T, f) in ((:(Union{typeof (& ), typeof (* ), typeof (min)}), :(& )),
1702
1708
(:(Union{typeof (| ), typeof (max)}), :(| )),
1703
1709
(:(Union{typeof (xor), typeof (!= )}), :xor ),
1704
- (:(Union{typeof (>= ), typeof (^ )}), :((p, q) -> p | ~ q)),
1705
- (:(typeof (<= )), :((p, q) -> ~ p | q)),
1706
- (:(typeof (== )), :((p, q) -> ~ xor (p, q))),
1707
- (:(typeof (< )), :((p, q) -> ~ p & q)),
1708
- (:(typeof (> )), :((p, q) -> p & ~ q)))
1710
+ (:(Union{typeof (>= ), typeof (^ )}), :((p, q) -> p | ! q)),
1711
+ (:(typeof (<= )), :((p, q) -> ! p | q)),
1712
+ (:(typeof (== )), :((p, q) -> ! xor (p, q))),
1713
+ (:(typeof (< )), :((p, q) -> ! p & q)),
1714
+ (:(typeof (> )), :((p, q) -> p & ! q)))
1709
1715
@eval map (:: $T , A:: BitArray , B:: BitArray ) = bit_map! ($ f, similar (A), A, B)
1710
1716
@eval map! (:: $T , dest:: BitArray , A:: BitArray , B:: BitArray ) = bit_map! ($ f, dest, A, B)
1711
1717
end
0 commit comments