@@ -9,10 +9,10 @@ export rankUpdate!
99
1010# # General
1111# ## BLAS
12- rankUpdate! (α :: T , x:: StridedVector{T} , y:: StridedVector{T} , A :: StridedMatrix{T} ) where {T<: BlasReal } = BLAS. ger! (α, x, y, A)
12+ rankUpdate! (A :: StridedMatrix{T} , x:: StridedVector{T} , y:: StridedVector{T} , α :: T ) where {T<: BlasReal } = BLAS. ger! (α, x, y, A)
1313
1414# ## Generic
15- function rankUpdate! (α :: Number , x:: StridedVector , y:: StridedVector , A :: StridedMatrix )
15+ function rankUpdate! (A :: StridedMatrix , x:: StridedVector , y:: StridedVector , α :: Number )
1616 m, n = size (A, 1 ), size (A, 2 )
1717 m == length (x) || throw (DimensionMismatch (" x vector has wrong length" ))
1818 n == length (y) || throw (DimensionMismatch (" y vector has wrong length" ))
@@ -24,12 +24,15 @@ function rankUpdate!(α::Number, x::StridedVector, y::StridedVector, A::StridedM
2424 end
2525end
2626
27+ # Deprecated 11 October 2018
28+ Base. @deprecate rankUpdate! (α:: Number , x:: StridedVector , y:: StridedVector , A:: StridedMatrix ) rankUpdate! (A, x, y, α)
29+
2730# # Hermitian
28- rankUpdate! (α :: T , a:: StridedVector{T} , A :: HermOrSym{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } = BLAS. syr! (A. uplo, α, a, A. data)
29- rankUpdate! (a :: StridedVector{T } , A :: HermOrSym{T,S } ) where {T<: BlasReal ,S<: StridedMatrix } = rankUpdate! (one (T), a, A)
31+ rankUpdate! (A :: HermOrSym{T,S} , a:: StridedVector{T} , α :: T ) where {T<: BlasReal ,S<: StridedMatrix } = BLAS. syr! (A. uplo, α, a, A. data)
32+ rankUpdate! (A :: HermOrSym{T,S } , a :: StridedVector{T } ) where {T<: BlasReal ,S<: StridedMatrix } = rankUpdate! (one (T), a, A)
3033
3134# ## Generic
32- function rankUpdate! (α :: Real , a:: StridedVector , A :: Hermitian )
35+ function rankUpdate! (A :: Hermitian , a:: StridedVector , α :: Real )
3336 n = size (A, 1 )
3437 n == length (a) || throw (DimensionMismatch (" a vector has wrong length" ))
3538 @inbounds for j in 1 : n
@@ -41,15 +44,18 @@ function rankUpdate!(α::Real, a::StridedVector, A::Hermitian)
4144 return A
4245end
4346
47+ # Deprecated 11 October 2018
48+ Base. @deprecate rankUpdate! (α:: Real , a:: StridedVector , A:: Hermitian ) rankUpdate! (A, a, α)
49+
4450# Rank k update
4551# # Real
46- rankUpdate! (α :: T , A:: StridedMatrix{T} , β :: T , C :: HermOrSym{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } = syrk! (C. uplo, ' N' , α, A, β, C. data)
52+ rankUpdate! (C :: HermOrSym{T,S} , A:: StridedMatrix{T} , α :: T , β :: T ) where {T<: BlasReal ,S<: StridedMatrix } = syrk! (C. uplo, ' N' , α, A, β, C. data)
4753
4854# # Complex
49- rankUpdate! (α :: T , A:: StridedMatrix{Complex{T}} , β :: T , C :: Hermitian{T,S} ) where {T<: BlasReal ,S<: StridedMatrix } = herk! (C. uplo, ' N' , α, A, β, C. data)
55+ rankUpdate! (C :: Hermitian{T,S} , A:: StridedMatrix{Complex{T}} , α :: T , β :: T ) where {T<: BlasReal ,S<: StridedMatrix } = herk! (C. uplo, ' N' , α, A, β, C. data)
5056
5157# ## Generic
52- function rankUpdate! (α :: Real , A:: StridedVecOrMat , C :: Hermitian )
58+ function rankUpdate! (C :: Hermitian , A:: StridedVecOrMat , α :: Real )
5359 n = size (C, 1 )
5460 n == size (A, 1 ) || throw (DimensionMismatch (" first dimension of A has wrong size" ))
5561 @inbounds if C. uplo == ' L' # branch outside the loop to have larger loop to optimize
@@ -74,6 +80,10 @@ function rankUpdate!(α::Real, A::StridedVecOrMat, C::Hermitian)
7480 return C
7581end
7682
83+ # Deprecated 11 October 2018
84+ Base. @deprecate rankUpdate! (α:: Real , A:: StridedVecOrMat , C:: Hermitian ) rankUpdate! (C, A, α)
85+ Base. @deprecate rankUpdate! (α:: Real , A:: StridedVecOrMat , β:: Real , C:: Hermitian ) rankUpdate! (C, A, α, β)
86+
7787# BLAS style mul!
7888# # gemv
7989mul! (y:: StridedVector{T} , A:: StridedMatrix{T} , x:: StridedVector{T} , α:: T , β:: T ) where {T<: BlasFloat } = gemv! (' N' , α, A, x, β, y)
0 commit comments