-
-
Notifications
You must be signed in to change notification settings - Fork 60
/
Copy pathresolve.jl
85 lines (80 loc) · 2.95 KB
/
resolve.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using LinearSolve, LinearAlgebra, SparseArrays, InteractiveUtils, Test
using LinearSolve: AbstractDenseFactorization, AbstractSparseFactorization
for alg in vcat(InteractiveUtils.subtypes(AbstractDenseFactorization),
InteractiveUtils.subtypes(AbstractSparseFactorization))
if alg in [PardisoJL]
## Pardiso has extra tests in test/pardiso/pardiso.jl
continue
end
@show alg
if !(alg in [
DiagonalFactorization,
CudaOffloadFactorization,
AppleAccelerateLUFactorization,
MetalLUFactorization
]) &&
(!(alg == AppleAccelerateLUFactorization) ||
LinearSolve.appleaccelerate_isavailable()) &&
(!(alg == MKLLUFactorization) || LinearSolve.usemkl)
A = [1.0 2.0; 3.0 4.0]
alg in [KLUFactorization, UMFPACKFactorization, SparspakFactorization] &&
(A = sparse(A))
A = A' * A
@show A
alg in [CHOLMODFactorization] && (A = sparse(Symmetric(A, :L)))
alg in [BunchKaufmanFactorization] && (A = Symmetric(A, :L))
alg in [LDLtFactorization] && (A = SymTridiagonal(A))
b = [1.0, 2.0]
prob = LinearProblem(A, b)
linsolve = init(
prob, alg(), alias = LinearAliasSpecifier(alias_A = false, alias_b = false))
@test solve!(linsolve).u ≈ [-2.0, 1.5]
@test !linsolve.isfresh
@test solve!(linsolve).u ≈ [-2.0, 1.5]
A = [1.0 2.0; 3.0 4.0]
alg in [KLUFactorization, UMFPACKFactorization, SparspakFactorization] &&
(A = sparse(A))
A = A' * A
alg in [CHOLMODFactorization] && (A = sparse(Symmetric(A, :L)))
alg in [BunchKaufmanFactorization] && (A = Symmetric(A, :L))
alg in [LDLtFactorization] && (A = SymTridiagonal(A))
linsolve.A = A
@test linsolve.isfresh
@test solve!(linsolve).u ≈ [-2.0, 1.5]
end
end
A = Diagonal([1.0, 4.0])
b = [1.0, 2.0]
prob = LinearProblem(A, b)
linsolve = init(prob, DiagonalFactorization(),
alias = LinearAliasSpecifier(alias_A = false, alias_b = false))
@test solve!(linsolve).u ≈ [1.0, 0.5]
@test solve!(linsolve).u ≈ [1.0, 0.5]
A = Diagonal([1.0, 4.0])
linsolve.A = A
@test solve!(linsolve).u ≈ [1.0, 0.5]
A = Symmetric([1.0 2.0
2.0 1.0])
b = [1.0, 2.0]
prob = LinearProblem(A, b)
linsolve = init(prob, BunchKaufmanFactorization(),
alias = LinearAliasSpecifier(alias_A = false, alias_b = false))
@test solve!(linsolve).u ≈ [1.0, 0.0]
@test solve!(linsolve).u ≈ [1.0, 0.0]
A = Symmetric([1.0 2.0
2.0 1.0])
linsolve.A = A
@test solve!(linsolve).u ≈ [1.0, 0.0]
A = [1.0 2.0
2.0 1.0]
A = Symmetric(A * A')
b = [1.0, 2.0]
prob = LinearProblem(A, b)
linsolve = init(prob, CholeskyFactorization(), alias_A = false, alias_b = false)
@test solve!(linsolve).u ≈ [-1 / 3, 2 / 3]
@test solve!(linsolve).u ≈ [-1 / 3, 2 / 3]
A = [1.0 2.0
2.0 1.0]
A = Symmetric(A * A')
b = [1.0, 2.0]
@test solve!(linsolve).u ≈ [-1 / 3, 2 / 3]