Skip to content

Commit 3708601

Browse files
committed
added blockiszero
1 parent 5dceb20 commit 3708601

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/utilities/block.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export RealOrComplex,
1414
blockset!,
1515
blockvecdot,
1616
blockzeros,
17-
blockaxpy!
17+
blockaxpy!,
18+
blockiszero
1819

1920

2021
const RealOrComplex{R} = Union{R, Complex{R}}
@@ -65,6 +66,9 @@ blockzeros(a::AbstractArray) = zeros(a)
6566
blockaxpy!(z::Tuple, x, alpha::Real, y::Tuple) = blockaxpy!.(z, x, alpha, y)
6667
blockaxpy!(z::AbstractArray, x, alpha::Real, y::AbstractArray) = (z .= x .+ alpha.*y)
6768

69+
blockiszero(x::AbstractArray) = iszero(x)
70+
blockiszero(x::Tuple) = all(iszero.(x))
71+
6872
# Define broadcast
6973

7074
import Base: broadcast!

test/test_block.jl

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ x2b = (randn(2), randn(3)+im.*randn(3), randn(2,3))
3232

3333
y = blocksimilar(x)
3434
yb = blocksimilar(xb)
35-
blockcopy!(y,x)
35+
blockcopy!(y,x)
3636
blockcopy!(yb,xb)
3737

3838
@test y == x
3939
@test yb == xb
4040

4141
y = blocksimilar(x)
4242
yb = blocksimilar(xb)
43-
blockset!(y,x)
43+
blockset!(y,x)
4444
blockset!(yb,xb)
4545

4646
@test y == x
@@ -72,8 +72,18 @@ blockaxpy!(yb,xb,2,x2b)
7272
@test y == x .+ 2.*x2
7373
@test yb == (xb[1] .+ 2.*x2b[1], xb[2] .+ 2.*x2b[2], xb[3] .+ 2.*x2b[3])
7474

75+
x = rand(Float64, 5)
76+
y = (x, x)
77+
@test blockiszero(x) == blockiszero(y) == false
7578

79+
x = rand(Complex{Float64}, 5)
80+
y = (x, x)
81+
@test blockiszero(x) == blockiszero(y) == false
7682

83+
x = zeros(Float64, 5)
84+
y = (x, x)
85+
@test blockiszero(x) == blockiszero(y) == true
7786

78-
79-
87+
x = zeros(Complex{Float64}, 5)
88+
y = (x, x)
89+
@test blockiszero(x) == blockiszero(y) == true

0 commit comments

Comments
 (0)