Add: julia-0.6.2
Former-commit-id: ccc667cf67d569f3fb3df39aa57c2134755a7551
This commit is contained in:
60
julia-0.6.2/share/julia/test/sparse/spqr.jl
Normal file
60
julia-0.6.2/share/julia/test/sparse/spqr.jl
Normal file
@@ -0,0 +1,60 @@
|
||||
# This file is a part of Julia. License is MIT: https://julialang.org/license
|
||||
|
||||
using Base.SparseArrays.SPQR
|
||||
using Base.SparseArrays.CHOLMOD
|
||||
|
||||
let
|
||||
m, n = 100, 10
|
||||
nn = 100
|
||||
|
||||
for eltyA in (Float64, Complex{Float64})
|
||||
for eltyB in (Int, Float64, Complex{Float64})
|
||||
if eltyA <: Real
|
||||
A = sparse([1:n; rand(1:m, nn - n)], [1:n; rand(1:n, nn - n)], randn(nn), m, n)
|
||||
else
|
||||
A = sparse([1:n; rand(1:m, nn - n)], [1:n; rand(1:n, nn - n)], complex.(randn(nn), randn(nn)), m, n)
|
||||
end
|
||||
if eltyB == Int
|
||||
B = rand(1:10, m, 2)
|
||||
elseif eltyB <: Real
|
||||
B = randn(m, 2)
|
||||
else
|
||||
B = complex.(randn(m, 2), randn(m, 2))
|
||||
end
|
||||
|
||||
@inferred A\B
|
||||
@test A\B[:,1] ≈ Array(A)\B[:,1]
|
||||
@test A\B ≈ Array(A)\B
|
||||
@test_throws DimensionMismatch A\B[1:m-1,:]
|
||||
@test A[1:9,:]*(A[1:9,:]\ones(eltyB, 9)) ≈ ones(9) # Underdetermined system
|
||||
|
||||
if eltyA == eltyB # promotions not defined for unexported methods
|
||||
@test qrfact(sparse(eye(eltyA, 5)))\ones(eltyA, 5) == ones(5)
|
||||
@test_throws ArgumentError SPQR.factorize(SPQR.ORDERING_DEFAULT, SPQR.DEFAULT_TOL, CHOLMOD.Sparse(sparse(eye(eltyA, 5))))
|
||||
@test_throws ArgumentError SPQR.Factorization(1, 1, convert(Ptr{SPQR.C_Factorization{eltyA}}, C_NULL))
|
||||
F = qrfact(A)
|
||||
@test size(F) == (m,n)
|
||||
@test size(F, 1) == m
|
||||
@test size(F, 2) == n
|
||||
@test size(F, 3) == 1
|
||||
@test_throws ArgumentError size(F, 0)
|
||||
|
||||
# low level wrappers
|
||||
@test_throws DimensionMismatch SPQR.solve(SPQR.RX_EQUALS_B, F, CHOLMOD.Dense(B'))
|
||||
@test_throws DimensionMismatch SPQR.solve(SPQR.RTX_EQUALS_B, F, CHOLMOD.Dense(B))
|
||||
@test_throws DimensionMismatch SPQR.qmult(SPQR.QX, F, CHOLMOD.Dense(B'))
|
||||
@test_throws DimensionMismatch SPQR.qmult(SPQR.XQ, F, CHOLMOD.Dense(B))
|
||||
@test A\B ≈ SPQR.backslash(SPQR.ORDERING_DEFAULT, SPQR.DEFAULT_TOL, CHOLMOD.Sparse(A), CHOLMOD.Dense(B))
|
||||
@test_throws DimensionMismatch SPQR.backslash(SPQR.ORDERING_DEFAULT, SPQR.DEFAULT_TOL, CHOLMOD.Sparse(A), CHOLMOD.Dense(B[1:m-1,:]))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Issue 14134
|
||||
F = qrfact(sprandn(10,5,0.5))
|
||||
b = IOBuffer()
|
||||
serialize(b, F)
|
||||
seekstart(b)
|
||||
@test_throws ArgumentError deserialize(b)\ones(10)
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user