@@ -11,7 +11,7 @@ export rankUpdate!
11
11
12
12
# # General
13
13
# ## BLAS
14
- rankUpdate! {T<:BlasReal} (α:: T , x:: StridedVector{T} , y:: StridedVector{T} , A:: StridedMatrix{T} ) = ger! (α, x, y, A)
14
+ rankUpdate! (α:: T , x:: StridedVector{T} , y:: StridedVector{T} , A:: StridedMatrix{T} ) where {T <: BlasReal } = ger! (α, x, y, A)
15
15
16
16
# ## Generic
17
17
function rankUpdate! (α:: Number , x:: StridedVector , y:: StridedVector , A:: StridedMatrix )
@@ -27,8 +27,8 @@ function rankUpdate!(α::Number, x::StridedVector, y::StridedVector, A::StridedM
27
27
end
28
28
29
29
# # Hermitian
30
- rankUpdate! {T<:BlasReal,S<:StridedMatrix} (α:: T , a:: StridedVector{T} , A:: HermOrSym{T,S} ) = syr! (A. uplo, α, a, A. data)
31
- rankUpdate! {T<:BlasReal,S<:StridedMatrix} (a:: StridedVector{T} , A:: HermOrSym{T,S} ) = rankUpdate! (one (T), a, A)
30
+ rankUpdate! (α:: T , a:: StridedVector{T} , A:: HermOrSym{T,S} ) where {T <: BlasReal ,S <: StridedMatrix } = syr! (A. uplo, α, a, A. data)
31
+ rankUpdate! (a:: StridedVector{T} , A:: HermOrSym{T,S} ) where {T <: BlasReal ,S <: StridedMatrix } = rankUpdate! (one (T), a, A)
32
32
33
33
# ## Generic
34
34
function rankUpdate! (α:: Real , a:: StridedVector , A:: Hermitian )
45
45
46
46
# Rank k update
47
47
# # Real
48
- rankUpdate! {T<:BlasReal,S<:StridedMatrix} (α:: T , A:: StridedMatrix{T} , β:: T , C:: HermOrSym{T,S} ) = syrk! (C. uplo, ' N' , α, A, β, C. data)
48
+ rankUpdate! (α:: T , A:: StridedMatrix{T} , β:: T , C:: HermOrSym{T,S} ) where {T <: BlasReal ,S <: StridedMatrix } = syrk! (C. uplo, ' N' , α, A, β, C. data)
49
49
50
50
# # Complex
51
- rankUpdate! {T<:BlasReal,S<:StridedMatrix} (α:: T , A:: StridedMatrix{Complex{T}} , β:: T , C:: Hermitian{T,S} ) = herk! (C. uplo, ' N' , α, A, β, C. data)
51
+ rankUpdate! (α:: T , A:: StridedMatrix{Complex{T}} , β:: T , C:: Hermitian{T,S} ) where {T <: BlasReal ,S <: StridedMatrix } = herk! (C. uplo, ' N' , α, A, β, C. data)
52
52
53
53
# ## Generic
54
54
function rankUpdate! (α:: Real , A:: StridedVecOrMat , C:: Hermitian )
78
78
79
79
# BLAS style A_mul_B!
80
80
# # gemv
81
- A_mul_B! {T<:BlasFloat} (α:: T , A:: StridedMatrix{T} , x:: StridedVector{T} , β:: T , y:: StridedVector{T} ) = gemv! (' N' , α, A, x, β, y)
82
- Ac_mul_B! {T<:BlasFloat} (α:: T , A:: StridedMatrix{T} , x:: StridedVector{T} , β:: T , y:: StridedVector{T} ) = gemv! (' C' , α, A, x, β, y)
81
+ A_mul_B! (α:: T , A:: StridedMatrix{T} , x:: StridedVector{T} , β:: T , y:: StridedVector{T} ) where {T <: BlasFloat } = gemv! (' N' , α, A, x, β, y)
82
+ Ac_mul_B! (α:: T , A:: StridedMatrix{T} , x:: StridedVector{T} , β:: T , y:: StridedVector{T} ) where {T <: BlasFloat } = gemv! (' C' , α, A, x, β, y)
83
83
84
84
# # gemm
85
- A_mul_B! {T<:BlasFloat} (α:: T , A:: StridedMatrix{T} , B:: StridedMatrix{T} , β:: T , C:: StridedMatrix{T} ) = gemm! (' N' , ' N' , α, A, B, β, C)
86
- Ac_mul_B! {T<:BlasFloat} (α:: T , A:: StridedMatrix{T} , B:: StridedMatrix{T} , β:: T , C:: StridedMatrix{T} ) = gemm! (' C' , ' N' , α, A, B, β, C)
85
+ A_mul_B! (α:: T , A:: StridedMatrix{T} , B:: StridedMatrix{T} , β:: T , C:: StridedMatrix{T} ) where {T <: BlasFloat } = gemm! (' N' , ' N' , α, A, B, β, C)
86
+ Ac_mul_B! (α:: T , A:: StridedMatrix{T} , B:: StridedMatrix{T} , β:: T , C:: StridedMatrix{T} ) where {T <: BlasFloat } = gemm! (' C' , ' N' , α, A, B, β, C)
87
87
# Not optimized since it is a generic fallback. Can probably soon be removed when the signatures in base have been updated.
88
88
function A_mul_B! (α:: Number , A:: StridedMatrix , B:: StridedVecOrMat , β:: Number , C:: StridedVecOrMat )
89
89
m, n = size (C, 1 ), size (C, 2 )
@@ -128,17 +128,17 @@ end
128
128
129
129
# # trmm
130
130
# ## BLAS versions
131
- A_mul_B! {T<:BlasFloat,S} (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' U' , ' N' , ' N' , α, A. data, B)
132
- A_mul_B! {T<:BlasFloat,S} (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' L' , ' N' , ' N' , α, A. data, B)
133
- A_mul_B! {T<:BlasFloat,S} (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' U' , ' N' , ' U' , α, A. data, B)
134
- A_mul_B! {T<:BlasFloat,S} (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' L' , ' N' , ' U' , α, A. data, B)
135
- Ac_mul_B! {T<:BlasFloat,S} (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' U' , ' C' , ' N' , α, A. data, B)
136
- Ac_mul_B! {T<:BlasFloat,S} (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' L' , ' C' , ' N' , α, A. data, B)
137
- Ac_mul_B! {T<:BlasFloat,S} (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' U' , ' C' , ' U' , α, A. data, B)
138
- Ac_mul_B! {T<:BlasFloat,S} (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} ) = trmm! (' L' , ' L' , ' C' , ' U' , α, A. data, B)
131
+ A_mul_B! (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' U' , ' N' , ' N' , α, A. data, B)
132
+ A_mul_B! (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' L' , ' N' , ' N' , α, A. data, B)
133
+ A_mul_B! (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' U' , ' N' , ' U' , α, A. data, B)
134
+ A_mul_B! (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' L' , ' N' , ' U' , α, A. data, B)
135
+ Ac_mul_B! (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' U' , ' C' , ' N' , α, A. data, B)
136
+ Ac_mul_B! (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' L' , ' C' , ' N' , α, A. data, B)
137
+ Ac_mul_B! (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' U' , ' C' , ' U' , α, A. data, B)
138
+ Ac_mul_B! (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: BlasFloat ,S} = trmm! (' L' , ' L' , ' C' , ' U' , α, A. data, B)
139
139
140
140
# ## Generic fallbacks
141
- function A_mul_B! {T<:Number,S} (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} )
141
+ function A_mul_B! (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
142
142
AA = A. data
143
143
m, n = size (B)
144
144
for i = 1 : m
@@ -151,7 +151,7 @@ function A_mul_B!{T<:Number,S}(α::T, A::UpperTriangular{T,S}, B::StridedMatrix{
151
151
end
152
152
return B
153
153
end
154
- function A_mul_B! {T<:Number,S} (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} )
154
+ function A_mul_B! (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
155
155
AA = A. data
156
156
m, n = size (B)
157
157
for i = m: - 1 : 1
@@ -164,7 +164,7 @@ function A_mul_B!{T<:Number,S}(α::T, A::LowerTriangular{T,S}, B::StridedMatrix{
164
164
end
165
165
return B
166
166
end
167
- function A_mul_B! {T<:Number,S} (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} )
167
+ function A_mul_B! (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
168
168
AA = A. data
169
169
m, n = size (B)
170
170
for i = 1 : m
@@ -177,7 +177,7 @@ function A_mul_B!{T<:Number,S}(α::T, A::UnitUpperTriangular{T,S}, B::StridedMat
177
177
end
178
178
return B
179
179
end
180
- function A_mul_B! {T<:Number,S} (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} )
180
+ function A_mul_B! (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
181
181
AA = A. data
182
182
m, n = size (B)
183
183
for i = m: - 1 : 1
@@ -190,7 +190,7 @@ function A_mul_B!{T<:Number,S}(α::T, A::UnitLowerTriangular{T,S}, B::StridedMat
190
190
end
191
191
return B
192
192
end
193
- function Ac_mul_B! {T<:Number,S} (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} )
193
+ function Ac_mul_B! (α:: T , A:: UpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
194
194
AA = A. data
195
195
m, n = size (B)
196
196
for i = m: - 1 : 1
@@ -203,7 +203,7 @@ function Ac_mul_B!{T<:Number,S}(α::T, A::UpperTriangular{T,S}, B::StridedMatrix
203
203
end
204
204
return B
205
205
end
206
- function Ac_mul_B! {T<:Number,S} (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} )
206
+ function Ac_mul_B! (α:: T , A:: LowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
207
207
AA = A. data
208
208
m, n = size (B)
209
209
for i = 1 : m
@@ -216,7 +216,7 @@ function Ac_mul_B!{T<:Number,S}(α::T, A::LowerTriangular{T,S}, B::StridedMatrix
216
216
end
217
217
return B
218
218
end
219
- function Ac_mul_B! {T<:Number,S} (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} )
219
+ function Ac_mul_B! (α:: T , A:: UnitUpperTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
220
220
AA = A. data
221
221
m, n = size (B)
222
222
for i = m: - 1 : 1
@@ -229,7 +229,7 @@ function Ac_mul_B!{T<:Number,S}(α::T, A::UnitUpperTriangular{T,S}, B::StridedMa
229
229
end
230
230
return B
231
231
end
232
- function Ac_mul_B! {T<:Number,S} (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} )
232
+ function Ac_mul_B! (α:: T , A:: UnitLowerTriangular{T,S} , B:: StridedMatrix{T} ) where {T <: Number ,S}
233
233
AA = A. data
234
234
m, n = size (B)
235
235
for i = 1 : m
0 commit comments