|
53 | 53 | # fills in the rows kr of UX
|
54 | 54 | main_upper_mul_tri_triview!(UX, U::UpperTriangular, X, kr, kwds...) = main_upper_mul_tri_triview!(UX, parent(U), X, kr, kwds...)
|
55 | 55 |
|
56 |
| -function main_upper_mul_tri_triview!(UX, U::Union{CachedMatrix,AdaptiveCholeskyFactors,AdaptiveQRFactors}, X, kr, kwds...) |
| 56 | +function main_upper_mul_tri_triview!(UX, U::Union{CachedMatrix,AdaptiveCholeskyFactors}, X, kr, kwds...) |
57 | 57 | resizedata!(U, kr[end], kr[end]+2)
|
58 | 58 | main_upper_mul_tri_triview!(UX, U.data, X, kr, kwds...)
|
59 | 59 | end
|
60 | 60 |
|
| 61 | +function main_upper_mul_tri_triview!(UX, U::AdaptiveQRFactors, X, kr, kwds...) |
| 62 | + resizedata!(U, kr[end], kr[end]+2) |
| 63 | + main_upper_mul_tri_triview!(UX, U.data.data, X, kr, kwds...) |
| 64 | +end |
| 65 | + |
| 66 | + |
61 | 67 | function main_upper_mul_tri_triview!(UX, U::BandedMatrix, X, kr, bₖ=X[kr[1]-1,kr[1]], aₖ=X[kr[1],kr[1]], cₖ=X[kr[1]+1,kr[1]], cₖ₋₁=X[kr[1],kr[1]-1])
|
62 | 68 | Xdl, Xd, Xdu = subdiagonaldata(X), diagonaldata(X), supdiagonaldata(X)
|
63 | 69 | UXdl, UXd, UXdu = UX.dl, UX.d, UX.du
|
@@ -160,6 +166,11 @@ function main_tri_mul_invupper_triview!(Y::Tridiagonal, X::Tridiagonal, R::Union
|
160 | 166 | main_tri_mul_invupper_triview!(Y, X, R.data, kr, kwds...)
|
161 | 167 | end
|
162 | 168 |
|
| 169 | +function main_tri_mul_invupper_triview!(Y::Tridiagonal, X::Tridiagonal, R::AdaptiveQRFactors, kr, kwds...) |
| 170 | + resizedata!(R, kr[end], kr[end]+1) |
| 171 | + main_tri_mul_invupper_triview!(Y, X, R.data.data, kr, kwds...) |
| 172 | +end |
| 173 | + |
163 | 174 | function main_tri_mul_invupper_triview!(Y::Tridiagonal, X::Tridiagonal, R::BandedMatrix, kr, Rₖₖ=R[first(kr)-1,first(kr)-1], Rₖₖ₊₁=R[first(kr)-1,first(kr)])
|
164 | 175 | Xdl, Xd, Xdu = X.dl, X.d, X.du
|
165 | 176 | Ydl, Yd, Ydu = Y.dl, Y.d, Y.du
|
|
217 | 228 | function TridiagonalConjugationData(U, X, V)
|
218 | 229 | T = promote_type(typeof(inv(V[1, 1])), eltype(U), eltype(X)) # include inv so that we can't get Ints
|
219 | 230 | n_init = 100
|
220 |
| - UX = Tridiagonal(Vector{T}(undef, n_init-1), Vector{T}(undef, n_init), Vector{T}(undef, n_init-1)) |
221 |
| - Y = Tridiagonal(Vector{T}(undef, n_init-1), Vector{T}(undef, n_init), Vector{T}(undef, n_init-1)) |
| 231 | + UX = Tridiagonal(zeros(T, n_init-1), zeros(T, n_init), zeros(T, n_init-1)) # zeros for BigFLoat |
| 232 | + Y = Tridiagonal(zeros(T, n_init-1), zeros(T, n_init), zeros(T, n_init-1)) |
222 | 233 | resizedata!(U, n_init, n_init)
|
223 | 234 | resizedata!(V, n_init, n_init)
|
224 | 235 | initiate_upper_mul_tri_triview!(UX, U, X) # fill-in 1st row
|
|
0 commit comments