@@ -61,22 +61,20 @@ Base.kron(A::PDMat, B::PDMat) = PDMat(kron(A.mat, B.mat), Cholesky(kron(A.chol.U
6161# ## whiten and unwhiten
6262
6363function whiten! (r:: StridedVecOrMat , a:: PDMat , x:: StridedVecOrMat )
64- cf = a. chol. U
6564 v = _rcopy! (r, x)
66- ldiv! (transpose (cf ), v)
65+ ldiv! (chol_lower (a . chol ), v)
6766end
6867
6968function unwhiten! (r:: StridedVecOrMat , a:: PDMat , x:: StridedVecOrMat )
70- cf = a. chol. U
7169 v = _rcopy! (r, x)
72- lmul! (transpose (cf ), v)
70+ lmul! (chol_lower (a . chol ), v)
7371end
7472
7573
7674# ## quadratic forms
7775
78- quad (a:: PDMat , x:: AbstractVector ) = sum (abs2, a. chol. U * x)
79- invquad (a:: PDMat , x:: AbstractVector ) = sum (abs2, a. chol. L \ x)
76+ quad (a:: PDMat , x:: AbstractVector ) = sum (abs2, chol_upper ( a. chol) * x)
77+ invquad (a:: PDMat , x:: AbstractVector ) = sum (abs2, chol_lower ( a. chol) \ x)
8078
8179"""
8280 quad!(r::AbstractArray, a::AbstractPDMat, x::StridedMatrix)
@@ -96,25 +94,21 @@ invquad!(r::AbstractArray, a::PDMat, x::StridedMatrix) = colwise_dot!(r, x, a.ma
9694# ## tri products
9795
9896function X_A_Xt (a:: PDMat , x:: StridedMatrix )
99- cf = a. chol. U
100- z = rmul! (copy (x), transpose (cf))
97+ z = rmul! (copy (x), chol_lower (a. chol))
10198 return z * transpose (z)
10299end
103100
104101function Xt_A_X (a:: PDMat , x:: StridedMatrix )
105- cf = a. chol. U
106- z = lmul! (cf, copy (x))
102+ z = lmul! (chol_upper (a. chol), copy (x))
107103 return transpose (z) * z
108104end
109105
110106function X_invA_Xt (a:: PDMat , x:: StridedMatrix )
111- cf = a. chol. U
112- z = rdiv! (copy (x), cf)
107+ z = rdiv! (copy (x), chol_upper (a. chol))
113108 return z * transpose (z)
114109end
115110
116111function Xt_invA_X (a:: PDMat , x:: StridedMatrix )
117- cf = a. chol. U
118- z = ldiv! (transpose (cf), copy (x))
112+ z = ldiv! (chol_lower (a. chol), copy (x))
119113 return transpose (z) * z
120114end
0 commit comments