mollusk 0e4acfb8f2 fix incorrect folder name for julia-0.6.x
Former-commit-id: ef2c7401e0876f22d2f7762d182cfbcd5a7d9c70
2018-06-11 03:28:36 -07:00

61 lines
2.3 KiB
Julia

# 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