Skip to content

Commit 0dd9318

Browse files
committed
fix order of solve in ldiv
1 parent 49d889e commit 0dd9318

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/solve.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,23 +95,24 @@ function simplifying_dot(x,y)
9595
end
9696
end
9797

98-
function ldiv(A::LU, b)
99-
# unit lower triangular solve first:
98+
function ldiv(AA, A::LU, b)
10099
L = A.L
101100
U = A.U
102101
m, n = size(L)
103102
x = Vector{Any}(undef, length(b))
104103
b = b[A.p]
105-
for i=1:n
106-
sub = simplifying_dot(b[1:i-1], L[i, 1:i-1])
107-
x[i] = _iszero(sub) ? b[i] : b[i] - sub
108-
end
109104

110105
for i=n:-1:1
111106
sub = simplifying_dot(b[i+1:end], U[i,i+1:end])
112107
den = U[i,i]
108+
x[i] = _iszero(sub) ? b[i] : b[i] - sub
109+
x[i] = _isone(den) ? x[i] : _isone(-den) ? -x[i] : x[i] / den
110+
end
111+
112+
# unit lower triangular solve first:
113+
for i=1:n
114+
sub = simplifying_dot(x[1:i-1], L[i, 1:i-1])
113115
x[i] = _iszero(sub) ? x[i] : x[i] - sub
114-
x[i] = _isone(U[i,i]) ? x[i] : _isone(-U[i,i]) ? -x[i] : x[i] / U[i,i]
115116
end
116117
x
117118
end

0 commit comments

Comments
 (0)