@@ -273,119 +273,6 @@ end
273
273
@test B* A ≈ B* Array (A)
274
274
end
275
275
276
- @testset " complex matrix-vector multiplication and left-division" begin
277
- if Base. USE_GPL_LIBS
278
- for i = 1 : 5
279
- a = I + 0.1 * sprandn (5 , 5 , 0.2 )
280
- b = randn (5 ,3 ) + im* randn (5 ,3 )
281
- c = randn (5 ) + im* randn (5 )
282
- d = randn (5 ) + im* randn (5 )
283
- α = rand (ComplexF64)
284
- β = rand (ComplexF64)
285
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
286
- @test (maximum (abs .(mul! (similar (b), a, b) - Array (a)* b)) < 100 * eps ()) # for compatibility with present matmul API. Should go away eventually.
287
- @test (maximum (abs .(mul! (similar (c), a, c) - Array (a)* c)) < 100 * eps ()) # for compatibility with present matmul API. Should go away eventually.
288
- @test (maximum (abs .(mul! (similar (b), transpose (a), b) - transpose (Array (a))* b)) < 100 * eps ()) # for compatibility with present matmul API. Should go away eventually.
289
- @test (maximum (abs .(mul! (similar (c), transpose (a), c) - transpose (Array (a))* c)) < 100 * eps ()) # for compatibility with present matmul API. Should go away eventually.
290
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
291
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
292
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
293
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
294
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
295
- @test (maximum (abs .((a' * c + d) - (Array (a)' * c + d))) < 1000 * eps ())
296
- @test (maximum (abs .((α* transpose (a)* c + β* d) - (α* transpose (Array (a))* c + β* d))) < 1000 * eps ())
297
- @test (maximum (abs .((transpose (a)* c + d) - (transpose (Array (a))* c + d))) < 1000 * eps ())
298
- c = randn (6 ) + im* randn (6 )
299
- @test_throws DimensionMismatch α* transpose (a)* c + β* c
300
- @test_throws DimensionMismatch α* transpose (a)* fill (1. ,5 ) + β* c
301
-
302
- a = I + 0.1 * sprandn (5 , 5 , 0.2 ) + 0.1 * im* sprandn (5 , 5 , 0.2 )
303
- b = randn (5 ,3 )
304
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
305
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
306
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
307
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
308
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
309
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
310
-
311
- a = I + tril (0.1 * sprandn (5 , 5 , 0.2 ))
312
- b = randn (5 ,3 ) + im* randn (5 ,3 )
313
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
314
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
315
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
316
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
317
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
318
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
319
-
320
- a = I + tril (0.1 * sprandn (5 , 5 , 0.2 ) + 0.1 * im* sprandn (5 , 5 , 0.2 ))
321
- b = randn (5 ,3 )
322
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
323
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
324
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
325
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
326
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
327
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
328
-
329
- a = I + triu (0.1 * sprandn (5 , 5 , 0.2 ))
330
- b = randn (5 ,3 ) + im* randn (5 ,3 )
331
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
332
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
333
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
334
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
335
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
336
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
337
-
338
- a = I + triu (0.1 * sprandn (5 , 5 , 0.2 ) + 0.1 * im* sprandn (5 , 5 , 0.2 ))
339
- b = randn (5 ,3 )
340
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
341
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
342
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
343
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
344
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
345
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
346
-
347
- a = I + triu (0.1 * sprandn (5 , 5 , 0.2 ))
348
- b = randn (5 ,3 ) + im* randn (5 ,3 )
349
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
350
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
351
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
352
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
353
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
354
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
355
-
356
- # UpperTriangular/LowerTriangular solve
357
- a = UpperTriangular (I + triu (0.1 * sprandn (5 , 5 , 0.2 )))
358
- b = sprandn (5 , 5 , 0.2 )
359
- @test (maximum (abs .(a\ b - Array (a)\ Array (b))) < 1000 * eps ())
360
- # test error throwing for bwdTrisolve
361
- @test_throws DimensionMismatch a\ Matrix {Float64} (I, 6 , 6 )
362
- a = LowerTriangular (I + tril (0.1 * sprandn (5 , 5 , 0.2 )))
363
- b = sprandn (5 , 5 , 0.2 )
364
- @test (maximum (abs .(a\ b - Array (a)\ Array (b))) < 1000 * eps ())
365
- # test error throwing for fwdTrisolve
366
- @test_throws DimensionMismatch a\ Matrix {Float64} (I, 6 , 6 )
367
-
368
-
369
-
370
- a = sparse (Diagonal (randn (5 ) + im* randn (5 )))
371
- b = randn (5 ,3 )
372
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
373
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
374
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
375
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
376
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
377
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
378
-
379
- b = randn (5 ,3 ) + im* randn (5 ,3 )
380
- @test (maximum (abs .(a* b - Array (a)* b)) < 100 * eps ())
381
- @test (maximum (abs .(a' b - Array (a)' b)) < 100 * eps ())
382
- @test (maximum (abs .(transpose (a)* b - transpose (Array (a))* b)) < 100 * eps ())
383
- @test (maximum (abs .(a\ b - Array (a)\ b)) < 1000 * eps ())
384
- @test (maximum (abs .(a' \ b - Array (a' )\ b)) < 1000 * eps ())
385
- @test (maximum (abs .(transpose (a)\ b - Array (transpose (a))\ b)) < 1000 * eps ())
386
- end
387
- end
388
- end
389
276
390
277
@testset " matrix multiplication" begin
391
278
for (m, p, n, q, k) in (
@@ -1641,14 +1528,6 @@ end
1641
1528
@test count (! iszero, sparsevec (Diagonal (Int[]))) == 0
1642
1529
end
1643
1530
1644
- @testset " explicit zeros" begin
1645
- if Base. USE_GPL_LIBS
1646
- a = SparseMatrixCSC (2 , 2 , [1 , 3 , 5 ], [1 , 2 , 1 , 2 ], [1.0 , 0.0 , 0.0 , 1.0 ])
1647
- @test lu (a)\ [2.0 , 3.0 ] ≈ [2.0 , 3.0 ]
1648
- @test cholesky (a)\ [2.0 , 3.0 ] ≈ [2.0 , 3.0 ]
1649
- end
1650
- end
1651
-
1652
1531
@testset " issue #9917" begin
1653
1532
@test sparse ([]' ) == reshape (sparse ([]), 1 , 0 )
1654
1533
@test Array (sparse ([])) == zeros (0 )
@@ -2088,43 +1967,6 @@ end
2088
1967
@test_throws ArgumentError opnorm (rowM, 3 )
2089
1968
end
2090
1969
2091
- @testset " sparse matrix cond" begin
2092
- local A = sparse (reshape ([1.0 ], 1 , 1 ))
2093
- Ac = sprandn (20 , 20 ,.5 ) + im* sprandn (20 , 20 ,.5 )
2094
- Ar = sprandn (20 , 20 ,.5 ) + eps ()* I
2095
- @test cond (A, 1 ) == 1.0
2096
- # For a discussion of the tolerance, see #14778
2097
- if Base. USE_GPL_LIBS
2098
- @test 0.99 <= cond (Ar, 1 ) \ opnorm (Ar, 1 ) * opnorm (inv (Array (Ar)), 1 ) < 3
2099
- @test 0.99 <= cond (Ac, 1 ) \ opnorm (Ac, 1 ) * opnorm (inv (Array (Ac)), 1 ) < 3
2100
- @test 0.99 <= cond (Ar, Inf ) \ opnorm (Ar, Inf ) * opnorm (inv (Array (Ar)), Inf ) < 3
2101
- @test 0.99 <= cond (Ac, Inf ) \ opnorm (Ac, Inf ) * opnorm (inv (Array (Ac)), Inf ) < 3
2102
- end
2103
- @test_throws ArgumentError cond (A,2 )
2104
- @test_throws ArgumentError cond (A,3 )
2105
- Arect = spzeros (10 , 6 )
2106
- @test_throws DimensionMismatch cond (Arect, 1 )
2107
- @test_throws ArgumentError cond (Arect,2 )
2108
- @test_throws DimensionMismatch cond (Arect, Inf )
2109
- end
2110
-
2111
- @testset " sparse matrix opnormestinv" begin
2112
- Random. seed! (1235 )
2113
- Ac = sprandn (20 ,20 ,.5 ) + im* sprandn (20 ,20 ,.5 )
2114
- Aci = ceil .(Int64, 100 * sprand (20 ,20 ,.5 )) + im* ceil .(Int64, sprand (20 ,20 ,.5 ))
2115
- Ar = sprandn (20 ,20 ,.5 )
2116
- Ari = ceil .(Int64, 100 * Ar)
2117
- if Base. USE_GPL_LIBS
2118
- # NOTE: opnormestinv is probabilistic, so requires a fixed seed (set above in Random.seed!(1234))
2119
- @test SparseArrays. opnormestinv (Ac,3 ) ≈ opnorm (inv (Array (Ac)),1 ) atol= 1e-4
2120
- @test SparseArrays. opnormestinv (Aci,3 ) ≈ opnorm (inv (Array (Aci)),1 ) atol= 1e-4
2121
- @test SparseArrays. opnormestinv (Ar) ≈ opnorm (inv (Array (Ar)),1 ) atol= 1e-4
2122
- @test_throws ArgumentError SparseArrays. opnormestinv (Ac,0 )
2123
- @test_throws ArgumentError SparseArrays. opnormestinv (Ac,21 )
2124
- end
2125
- @test_throws DimensionMismatch SparseArrays. opnormestinv (sprand (3 ,5 ,.9 ))
2126
- end
2127
-
2128
1970
@testset " issue #13008" begin
2129
1971
@test_throws ArgumentError sparse (Vector (1 : 100 ), Vector (1 : 100 ), fill (5 ,100 ), 5 , 5 )
2130
1972
@test_throws ArgumentError sparse (Int[], Vector (1 : 5 ), Vector (1 : 5 ))
@@ -2161,31 +2003,6 @@ end
2161
2003
@test LinearAlgebra. fillstored! (sparse (2.0 I, 5 , 5 ), 1 ) == Matrix (I, 5 , 5 )
2162
2004
end
2163
2005
2164
- @testset " factorization" begin
2165
- Random. seed! (123 )
2166
- local A
2167
- A = sparse (Diagonal (rand (5 ))) + sprandn (5 , 5 , 0.2 ) + im* sprandn (5 , 5 , 0.2 )
2168
- A = A + copy (A' )
2169
- @test ! Base. USE_GPL_LIBS || abs (det (factorize (Hermitian (A)))) ≈ abs (det (factorize (Array (A))))
2170
- A = sparse (Diagonal (rand (5 ))) + sprandn (5 , 5 , 0.2 ) + im* sprandn (5 , 5 , 0.2 )
2171
- A = A* A'
2172
- @test ! Base. USE_GPL_LIBS || abs (det (factorize (Hermitian (A)))) ≈ abs (det (factorize (Array (A))))
2173
- A = sparse (Diagonal (rand (5 ))) + sprandn (5 , 5 , 0.2 )
2174
- A = A + copy (transpose (A))
2175
- @test ! Base. USE_GPL_LIBS || abs (det (factorize (Symmetric (A)))) ≈ abs (det (factorize (Array (A))))
2176
- A = sparse (Diagonal (rand (5 ))) + sprandn (5 , 5 , 0.2 )
2177
- A = A* transpose (A)
2178
- @test ! Base. USE_GPL_LIBS || abs (det (factorize (Symmetric (A)))) ≈ abs (det (factorize (Array (A))))
2179
- @test factorize (triu (A)) == triu (A)
2180
- @test isa (factorize (triu (A)), UpperTriangular{Float64, SparseMatrixCSC{Float64, Int}})
2181
- @test factorize (tril (A)) == tril (A)
2182
- @test isa (factorize (tril (A)), LowerTriangular{Float64, SparseMatrixCSC{Float64, Int}})
2183
- C, b = A[:, 1 : 4 ], fill (1. , size (A, 1 ))
2184
- @test ! Base. USE_GPL_LIBS || factorize (C)\ b ≈ Array (C)\ b
2185
- @test_throws ErrorException eigen (A)
2186
- @test_throws ErrorException inv (A)
2187
- end
2188
-
2189
2006
@testset " issue #13792, use sparse triangular solvers for sparse triangular solves" begin
2190
2007
local A, n, x
2191
2008
n = 100
@@ -2905,13 +2722,15 @@ end
2905
2722
@test_throws MethodError sprandn (T, 5 , 5 , 0.5 )
2906
2723
end
2907
2724
2908
- @testset " method ambiguity" begin
2909
- # Ambiguity test is run inside a clean process.
2910
- # https://github.com/JuliaLang/julia/issues/28804
2911
- script = joinpath (@__DIR__ , " ambiguous_exec.jl" )
2912
- cmd = ` $(Base. julia_cmd ()) --startup-file=no $script `
2913
- @test success (pipeline (cmd; stdout = stdout , stderr = stderr ))
2914
- end
2725
+ # TODO : Re-enable after completing the SparseArrays.jl migration
2726
+ #
2727
+ # @testset "method ambiguity" begin
2728
+ # # Ambiguity test is run inside a clean process.
2729
+ # # https://github.com/JuliaLang/julia/issues/28804
2730
+ # script = joinpath(@__DIR__, "ambiguous_exec.jl")
2731
+ # cmd = `$(Base.julia_cmd()) --startup-file=no $script`
2732
+ # @test success(pipeline(cmd; stdout=stdout, stderr=stderr))
2733
+ # end
2915
2734
2916
2735
@testset " oneunit of sparse matrix" begin
2917
2736
A = sparse ([Second (0 ) Second (0 ); Second (0 ) Second (0 )])
0 commit comments