@@ -37,7 +37,7 @@ function resizedata!(B::CachedOperator{T,RaggedMatrix{T}},::Colon,n::Integer) wh
3737 end
3838
3939 pad! (B. data. data,B. data. cols[n+ 1 ]- 1 )
40- B. data. m = K
40+ B. data = RaggedMatrix (B . data . data, B . data . cols, K)
4141
4242 jr= B. datasize[2 ]+ 1 : n
4343 kr= 1 : K
5252
5353function resizedata! (B:: CachedOperator{T,RaggedMatrix{T}} ,n:: Integer ,m:: Integer ) where T<: Number
5454 resizedata! (B,:,m)
55- B . data. m = max ( B. data. m,n) # make sure we have at least n rows
56-
55+ data = B. data
56+ B . data = RaggedMatrix (data . data, data . cols, max (data . m,n)) # make sure we have at least n rows
5757 B
5858end
5959
6363QROperator (R:: CachedOperator{T,RaggedMatrix{T}} ) where {T} =
6464 QROperator (R,RaggedMatrix {T} (undef,0 ,Int[]),0 )
6565
66- function resizedata! (QR:: QROperator{<:CachedOperator{T,RaggedMatrix{T}}} , :: Colon , col) where {T}
66+ function resizedata! (QR:: QROperator{<:CachedOperator{T,RaggedMatrix{T}}, <:RaggedMatrix } , :: Colon , col) where {T}
6767 if col ≤ QR. ncols
6868 return QR
6969 end
@@ -79,7 +79,7 @@ function resizedata!(QR::QROperator{<:CachedOperator{T,RaggedMatrix{T}}}, ::Colo
7979 for J= 1 : QR. ncols
8080 wp= view (W,1 : colstop (W,J),J)
8181 for j = m+ 1 : MO. datasize[2 ]
82- kr = J : J + length (wp)- 1
82+ kr = range (J, length= length (wp))
8383 v = view (MO. data,kr,j)
8484 dt = dot (wp,v)
8585 axpy! (- 2 dt, wp, v)
@@ -92,19 +92,24 @@ function resizedata!(QR::QROperator{<:CachedOperator{T,RaggedMatrix{T}}}, ::Colo
9292 m = size (W,2 )
9393 resize! (W. cols,col+ 101 )
9494
95+ Wm = W. m
9596 for j= m+ 1 : col+ 100
9697 cs = colstop (MO. data,j)
9798 W. cols[j+ 1 ] = W. cols[j] + cs- j+ 1
98- W . m = max (W . m ,cs- j+ 1 )
99+ Wm = max (Wm ,cs- j+ 1 )
99100 end
100101
101102 resize! (W. data,W. cols[end ]- 1 )
103+ W = RaggedMatrix (W. data, W. cols, Wm)
104+ QR. H = W
102105 end
103106
104107 for k= QR. ncols+ 1 : col
105108 cs = colstop (MO. data,k)
106- W[1 : cs- k+ 1 ,k] = view (MO. data,k: cs,k) # diagonal and below
107- wp = view (W,1 : cs- k+ 1 ,k)
109+ indsk = k: cs
110+ indskax = eachindex (indsk)
111+ W[indskax,k] = view (MO. data,indsk,k) # diagonal and below
112+ wp = view (W,indskax,k)
108113 W[1 ,k] += flipsign (norm (wp),W[1 ,k])
109114 normalize! (wp)
110115
0 commit comments