|
317 | 317 | end
|
318 | 318 | end
|
319 | 319 |
|
| 320 | +@testset "map[!] over combinations of sparse and structured matrices" begin |
| 321 | + N, p = 10, 0.4 |
| 322 | + A = sprand(N, N, p) |
| 323 | + Z, fA = copy(A), Array(A) |
| 324 | + D = Diagonal(rand(N)) |
| 325 | + B = Bidiagonal(rand(N), rand(N - 1), true) |
| 326 | + T = Tridiagonal(rand(N - 1), rand(N), rand(N - 1)) |
| 327 | + S = SymTridiagonal(rand(N), rand(N - 1)) |
| 328 | + structuredarrays = (D, B, T, S) |
| 329 | + fstructuredarrays = map(Array, structuredarrays) |
| 330 | + for (X, fX) in zip(structuredarrays, fstructuredarrays) |
| 331 | + @test (Q = map(sin, X); Q isa SparseMatrixCSC && Q == sparse(map(sin, fX))) |
| 332 | + @test map!(sin, Z, X) == sparse(map(sin, fX)) |
| 333 | + @test (Q = map(cos, X); Q isa SparseMatrixCSC && Q == sparse(map(cos, fX))) |
| 334 | + @test map!(cos, Z, X) == sparse(map(cos, fX)) |
| 335 | + @test (Q = map(+, A, X); Q isa SparseMatrixCSC && Q == sparse(map(+, fA, fX))) |
| 336 | + @test map!(+, Z, A, X) == sparse(map(+, fA, fX)) |
| 337 | + for (Y, fY) in zip(structuredarrays, fstructuredarrays) |
| 338 | + @test (Q = map(+, X, Y); Q isa SparseMatrixCSC && Q == sparse(map(+, fX, fY))) |
| 339 | + @test map!(+, Z, X, Y) == sparse(map(+, fX, fY)) |
| 340 | + @test (Q = map(*, X, Y); Q isa SparseMatrixCSC && Q == sparse(map(*, fX, fY))) |
| 341 | + @test map!(*, Z, X, Y) == sparse(map(*, fX, fY)) |
| 342 | + @test (Q = map(+, X, A, Y); Q isa SparseMatrixCSC && Q == sparse(map(+, fX, fA, fY))) |
| 343 | + @test map!(+, Z, X, A, Y) == sparse(map(+, fX, fA, fY)) |
| 344 | + end |
| 345 | + end |
| 346 | +end |
| 347 | + |
320 | 348 | # Older tests of sparse broadcast, now largely covered by the tests above
|
321 | 349 | @testset "assorted tests of sparse broadcast over two input arguments" begin
|
322 | 350 | N, p = 10, 0.3
|
|
0 commit comments