@@ -9,10 +9,10 @@ export rankUpdate!
9
9
10
10
# # General
11
11
# ## 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)
13
13
14
14
# ## Generic
15
- function rankUpdate! (α :: Number , x:: StridedVector , y:: StridedVector , A :: StridedMatrix )
15
+ function rankUpdate! (A :: StridedMatrix , x:: StridedVector , y:: StridedVector , α :: Number )
16
16
m, n = size (A, 1 ), size (A, 2 )
17
17
m == length (x) || throw (DimensionMismatch (" x vector has wrong length" ))
18
18
n == length (y) || throw (DimensionMismatch (" y vector has wrong length" ))
@@ -24,12 +24,15 @@ function rankUpdate!(α::Number, x::StridedVector, y::StridedVector, A::StridedM
24
24
end
25
25
end
26
26
27
+ # Deprecated 11 October 2018
28
+ Base. @deprecate rankUpdate! (α:: Number , x:: StridedVector , y:: StridedVector , A:: StridedMatrix ) rankUpdate! (A, x, y, α)
29
+
27
30
# # 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)
30
33
31
34
# ## Generic
32
- function rankUpdate! (α :: Real , a:: StridedVector , A :: Hermitian )
35
+ function rankUpdate! (A :: Hermitian , a:: StridedVector , α :: Real )
33
36
n = size (A, 1 )
34
37
n == length (a) || throw (DimensionMismatch (" a vector has wrong length" ))
35
38
@inbounds for j in 1 : n
@@ -41,15 +44,18 @@ function rankUpdate!(α::Real, a::StridedVector, A::Hermitian)
41
44
return A
42
45
end
43
46
47
+ # Deprecated 11 October 2018
48
+ Base. @deprecate rankUpdate! (α:: Real , a:: StridedVector , A:: Hermitian ) rankUpdate! (A, a, α)
49
+
44
50
# Rank k update
45
51
# # 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)
47
53
48
54
# # 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)
50
56
51
57
# ## Generic
52
- function rankUpdate! (α :: Real , A:: StridedVecOrMat , C :: Hermitian )
58
+ function rankUpdate! (C :: Hermitian , A:: StridedVecOrMat , α :: Real )
53
59
n = size (C, 1 )
54
60
n == size (A, 1 ) || throw (DimensionMismatch (" first dimension of A has wrong size" ))
55
61
@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)
74
80
return C
75
81
end
76
82
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
+
77
87
# BLAS style mul!
78
88
# # gemv
79
89
mul! (y:: StridedVector{T} , A:: StridedMatrix{T} , x:: StridedVector{T} , α:: T , β:: T ) where {T<: BlasFloat } = gemv! (' N' , α, A, x, β, y)
0 commit comments