6
6
7
7
size (U:: AdaptiveCholeskyFactors ) = size (U. data. array)
8
8
bandwidths (A:: AdaptiveCholeskyFactors ) = (0 ,bandwidth (A. data,2 ))
9
- AdaptiveCholeskyFactors (A:: Symmetric ) = AdaptiveCholeskyFactors (cache (parent (A)),0 )
9
+
10
+ function AdaptiveCholeskyFactors (:: SymmetricLayout{<:AbstractBandedLayout} , S:: AbstractMatrix{T} ) where T
11
+ A = parent (S)
12
+ l,u = bandwidths (A)
13
+ data = BandedMatrix {T} (undef,(0 ,0 ),(l,u)) # pad super
14
+ AdaptiveCholeskyFactors (CachedArray (data,A), 0 )
15
+ end
16
+ AdaptiveCholeskyFactors (A:: AbstractMatrix{T} ) where T = AdaptiveCholeskyFactors (MemoryLayout (A), A)
10
17
MemoryLayout (:: Type{AdaptiveCholeskyFactors{T,DM,M}} ) where {T,DM,M} = AdaptiveLayout {typeof(MemoryLayout(DM))} ()
11
18
12
19
@@ -19,8 +26,9 @@ function partialcholesky!(F::AdaptiveCholeskyFactors{T,<:BandedMatrix}, n::Int)
19
26
factors = view (F. data. data,kr,kr)
20
27
banded_chol! (factors, UpperTriangular)
21
28
# multiply remaining columns
22
- U1 = UpperTriangular (view (F. data. data,n- u+ 1 : n,n- u+ 1 : n))
23
- B = view (F. data. data,n- u+ 1 : n,n+ 1 : n+ u)
29
+ kr2 = max (n- u+ 1 ,1 ): n
30
+ U1 = UpperTriangular (view (F. data. data,kr2,kr2))
31
+ B = view (F. data. data,kr2,n+ 1 : n+ u)
24
32
ldiv! (U1' ,B)
25
33
muladd! (- one (T),B' ,B,one (T),view (F. data. data,n+ 1 : n+ u,n+ 1 : n+ u))
26
34
F. ncols = n
0 commit comments