@@ -81,7 +81,7 @@ IndexStyle(::Type{<:BitArray}) = IndexLinear()
81
81
82
82
# # aux functions ##
83
83
84
- const _msk64 = ~ UInt64 (0 )
84
+ const _msk64 = flipbits ( 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 ] & flipbits ( 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 = flipbits (u << ld0) | (u << (ld1 + 1 ))
121
121
else
122
- msk_d0 = ~ (u << ld0)
122
+ msk_d0 = flipbits (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) & flipbits (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) & flipbits ( 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 & flipbits ( 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 = flipbits (u << ld0) | (u << (ld1+ 1 ))
181
181
else
182
- msk_d0 = ~ (u << ld0)
182
+ msk_d0 = flipbits (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) & flipbits (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) & flipbits (u << s)
192
+ chunks[kd0] = (chunks[kd0] & msk_d0) | ((chunk_s0 << ld0) & flipbits ( 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 & flipbits ( 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) & flipbits (u << (l1 + 1 ))
216
216
else
217
217
msk0 = (u << l0)
218
- msk1 = ~ (u << (l1+ 1 ))
218
+ msk1 = flipbits (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] &= flipbits ( 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] &= flipbits ( 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 = flipbits (u << ld0) | (u << (ld1+ 1 ))
257
257
lt0 = ld1
258
258
else
259
- msk_d0 = ~ (u << ld0)
259
+ msk_d0 = flipbits (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 & flipbits ( 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 & flipbits ( 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 = flipbits ( 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 & flipbits (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] &= flipbits ( 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 & flipbits (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 = flipbits ( 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 = flipbits ( msk_bef)
893
893
msk_bef >>>= 1
894
894
895
895
Bc = B. chunks
@@ -1088,13 +1088,13 @@ 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 (flipbits ), 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] = flipbits ( Bc[i])
1098
1098
end
1099
1099
Cc[end ] &= _msk_end (B)
1100
1100
end
@@ -1104,7 +1104,7 @@ end
1104
1104
"""
1105
1105
flipbits!(B::BitArray{N}) -> BitArray{N}
1106
1106
1107
- Performs a bitwise not operation on `B`. See [`~ `](@ref).
1107
+ Performs a bitwise not operation on `B`. See [`flipbits `](@ref).
1108
1108
1109
1109
# Examples
1110
1110
```jldoctest
@@ -1123,7 +1123,7 @@ function flipbits!(B::BitArray)
1123
1123
Bc = B. chunks
1124
1124
@inbounds if ! isempty (Bc)
1125
1125
for i = 1 : length (Bc)
1126
- Bc[i] = ~ Bc[i]
1126
+ Bc[i] = flipbits ( Bc[i])
1127
1127
end
1128
1128
Bc[end ] &= _msk_end (B)
1129
1129
end
@@ -1162,7 +1162,7 @@ broadcast(::typeof(&), B::BitArray, x::Bool) = x ? copy(B) : falses(size(B))
1162
1162
broadcast (:: typeof (& ), x:: Bool , B:: BitArray ) = broadcast (& , B, x)
1163
1163
broadcast (:: typeof (| ), B:: BitArray , x:: Bool ) = x ? trues (size (B)) : copy (B)
1164
1164
broadcast (:: typeof (| ), x:: Bool , B:: BitArray ) = broadcast (| , B, x)
1165
- broadcast (:: typeof (xor), B:: BitArray , x:: Bool ) = x ? .~ B : copy (B)
1165
+ broadcast (:: typeof (xor), B:: BitArray , x:: Bool ) = x ? flipbits .(B) : copy (B)
1166
1166
broadcast (:: typeof (xor), x:: Bool , B:: BitArray ) = broadcast (xor, B, x)
1167
1167
for f in (:& , :| , :xor )
1168
1168
@eval begin
@@ -1471,7 +1471,7 @@ end
1471
1471
1472
1472
# findfirst(B::BitArray) = findnext(B, 1) ## defined in array.jl
1473
1473
1474
- # aux function: same as findnext(~B , start), but performed without temporaries
1474
+ # aux function: same as findnext(flipbits(B) , start), but performed without temporaries
1475
1475
function findnextnot (B:: BitArray , start:: Integer )
1476
1476
start > 0 || throw (BoundsError (B, start))
1477
1477
start > length (B) && return 0
@@ -1482,7 +1482,7 @@ function findnextnot(B::BitArray, start::Integer)
1482
1482
1483
1483
chunk_start = _div64 (start- 1 )+ 1
1484
1484
within_chunk_start = _mod64 (start- 1 )
1485
- mask = ~ (_msk64 << within_chunk_start)
1485
+ mask = flipbits (_msk64 << within_chunk_start)
1486
1486
1487
1487
@inbounds if chunk_start < l
1488
1488
if Bc[chunk_start] | mask != _msk64
@@ -1557,7 +1557,7 @@ function findprevnot(B::BitArray, start::Integer)
1557
1557
Bc = B. chunks
1558
1558
1559
1559
chunk_start = _div64 (start- 1 )+ 1
1560
- mask = ~ _msk_end (start)
1560
+ mask = flipbits ( _msk_end (start) )
1561
1561
1562
1562
@inbounds begin
1563
1563
if Bc[chunk_start] | mask != _msk64
@@ -1688,24 +1688,24 @@ maximum(B::BitArray) = isempty(B) ? throw(ArgumentError("argument must be non-em
1688
1688
# arrays since there can be a 64x speedup by working at the level of Int64
1689
1689
# instead of looping bit-by-bit.
1690
1690
1691
- map (:: Union{typeof(~ ), typeof(!)} , A:: BitArray ) = bit_map! (~ , similar (A), A)
1691
+ map (:: Union{typeof(flipbits ), typeof(!)} , A:: BitArray ) = bit_map! (flipbits , similar (A), A)
1692
1692
map (:: typeof (zero), A:: BitArray ) = fill! (similar (A), false )
1693
1693
map (:: typeof (one), A:: BitArray ) = fill! (similar (A), true )
1694
1694
map (:: typeof (identity), A:: BitArray ) = copy (A)
1695
1695
1696
- map! (:: Union{typeof(~ ), typeof(!)} , dest:: BitArray , A:: BitArray ) = bit_map! (~ , dest, A)
1696
+ map! (:: Union{typeof(flipbits ), typeof(!)} , dest:: BitArray , A:: BitArray ) = bit_map! (flipbits , dest, A)
1697
1697
map! (:: typeof (zero), dest:: BitArray , A:: BitArray ) = fill! (dest, false )
1698
1698
map! (:: typeof (one), dest:: BitArray , A:: BitArray ) = fill! (dest, true )
1699
1699
map! (:: typeof (identity), dest:: BitArray , A:: BitArray ) = copyto! (dest, A)
1700
1700
1701
1701
for (T, f) in ((:(Union{typeof (& ), typeof (* ), typeof (min)}), :(& )),
1702
1702
(:(Union{typeof (| ), typeof (max)}), :(| )),
1703
1703
(:(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 )))
1704
+ (:(Union{typeof (>= ), typeof (^ )}), :((p, q) -> p | flipbits (q) )),
1705
+ (:(typeof (<= )), :((p, q) -> flipbits (p) | q)),
1706
+ (:(typeof (== )), :((p, q) -> flipbits ( xor (p, q) ))),
1707
+ (:(typeof (< )), :((p, q) -> flipbits (p) & q)),
1708
+ (:(typeof (> )), :((p, q) -> p & flipbits (q) )))
1709
1709
@eval map (:: $T , A:: BitArray , B:: BitArray ) = bit_map! ($ f, similar (A), A, B)
1710
1710
@eval map! (:: $T , dest:: BitArray , A:: BitArray , B:: BitArray ) = bit_map! ($ f, dest, A, B)
1711
1711
end
0 commit comments