@@ -15,17 +15,22 @@ function rankUpdate!(α::T, a::StridedVector{T},
1515 BLAS. syr! (A. uplo, α, a, A. data)
1616 A
1717end
18- rankUpdate! (a:: StridedVector{T} , A:: HermOrSym{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } = rankUpdate! (one (T), a, A)
18+
19+ rankUpdate! (a:: StridedVector{T} , A:: HermOrSym{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } =
20+ rankUpdate! (one (T), a, A)
1921
2022rankUpdate! (α:: T , A:: StridedMatrix{T} , β:: T ,
21- C:: HermOrSym{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } = BLAS. syrk! (C. uplo, ' N' , α, A, β, C. data)
23+ C:: HermOrSym{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } =
24+ BLAS. syrk! (C. uplo, ' N' , α, A, β, C. data)
25+
2226rankUpdate! (α:: T , A:: StridedMatrix{T} , C:: HermOrSym{T,S} ) where {T<: Real ,S<: StridedMatrix } =
2327 rankUpdate! (α, A, one (T), C)
28+
2429rankUpdate! (A:: StridedMatrix{T} , C:: HermOrSym{T,S} ) where {T<: Real ,S<: StridedMatrix } =
2530 rankUpdate! (one (T), A, one (T), C)
2631
27- function rankUpdate! (α:: T , A:: SparseMatrixCSC{T,I } ,
28- β:: T , C:: HermOrSym{T,S} ) where {T,I, S<: StridedMatrix{T} }
32+ function rankUpdate! (α:: T , A:: SparseMatrixCSC{T} ,
33+ β:: T , C:: HermOrSym{T,S} ) where {T,S<: StridedMatrix{T} }
2934 m, n = size (A)
3035 @argcheck m == size (C, 2 ) && C. uplo == ' L' DimensionMismatch
3136 Cd = C. data
@@ -73,6 +78,7 @@ function rankUpdate!(α::T, A::SparseMatrixCSC{T},
7378 C:: HermOrSym{T,UniformBlockDiagonal{T}} ) where T<: Number
7479 m, n, k = size (C. data. data)
7580 @argcheck m == n && size (A, 1 ) == m * k DimensionMismatch
81+ # Another expensive evaluation in terms of storage allocation
7682 aat = α * (A * A' )
7783 nz = nonzeros (aat)
7884 rv = rowvals (aat)
0 commit comments