Skip to content

Commit 9782812

Browse files
committed
more tests and fixes
1 parent 114a6e6 commit 9782812

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

src/linearalgebra.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ function Base.one(x::SparseArray{<:Any,2})
2727
@inbounds for i = 1:m
2828
u[i,i] = one(eltype(x))
2929
end
30+
return u
3031
end
3132

3233
# comparison

src/sparsearray.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@ function (::Type{S})(a::AbstractArray) where {S<:SparseArray}
151151
end
152152

153153
function SparseArray(A::Adjoint{T,<:SparseArray{T,2}}) where T
154+
B = SparseArray{T}(undef, size(A))
155+
for (I, v) in parent(A).data
156+
B[I[2], I[1]] = conj(v)
157+
end
158+
return B
159+
end
160+
function SparseArray(A::Transpose{T,<:SparseArray{T,2}}) where T
154161
B = SparseArray{T}(undef, size(A))
155162
for (I, v) in parent(A).data
156163
B[I[2], I[1]] = v

test/runtests.jl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ end
2626
ar = randn_sparse(arraytype{Float64}, dims)
2727
ac = randn_sparse(arraytype{ComplexF64}, dims)
2828

29+
slice = (1:rand(1:dims[1]), rand(1:dims[2]), rand(1:dims[3]):dims[3], rand(1:dims[4]))
30+
@test ar[slice...] == Array(ar)[slice...]
31+
32+
2933
α = randn(ComplexF64)
3034
β = randn(Float64)
3135
γ = 2
@@ -34,6 +38,8 @@ end
3438
@test @constinferred*ar) == γ*Array(ar)
3539
@test @constinferred(ac*β) == Array(ac)*β
3640
@test @constinferred(ar + ac) == Array(ar) + Array(ac)
41+
@test @constinferred(ac - ar) == Array(ac) - Array(ar)
42+
@test @constinferred(zero(ar)) + ac == ac
3743

3844
@test norm(ar + @constinferred*ar)) norm(ar)*abs(1+α)
3945
@test @constinferred(norm(ac + ac*α)) norm(ac)*abs(1+α)
@@ -63,8 +69,9 @@ end
6369

6470
@timedtestset "Basic matrix algebra" for arraytype in (SparseCOOArray, SparseDOKArray)
6571
using SparseArrays
66-
a = sprandn(ComplexF64, 100, 100, 0.1)
67-
b = sprandn(100, 100, 0.1)
72+
N = 100
73+
a = sprandn(ComplexF64, N, N, 0.1)
74+
b = sprandn(N, N, 0.1)
6875
aa = @constinferred(arraytype(a))
6976
bb = arraytype(b)
7077
@test aa == a
@@ -75,6 +82,11 @@ end
7582
@test aa'*bb Array(aa)'*Array(bb)
7683
@test aa'*bb' Array(aa)'*Array(bb)'
7784
@test aa*bb' Array(aa)*Array(bb)'
85+
@test @constinferred(one(aa)) == one(Array(aa))
86+
@test norm(one(aa)) sqrt(N)
87+
@test one(aa) + zero(aa) == one(bb)
88+
@test adjoint!(copy(aa), bb) == SparseArray(adjoint(bb)) == adjoint(Array(bb))
89+
@test transpose!(copy(aa), bb) == SparseArray(transpose(bb)) == transpose(Array(bb))
7890
end
7991

8092
@timedtestset "random contractions" for (eltype,arraytype) in

0 commit comments

Comments
 (0)