@@ -5,29 +5,7 @@ using LinearAlgebra: Transpose, Adjoint,
5
5
Hermitian, Symmetric,
6
6
LowerTriangular, UnitLowerTriangular,
7
7
UpperTriangular, UnitUpperTriangular,
8
- MulAddMul
9
-
10
- if isdefined (LinearAlgebra, :wrap ) # i.e., VERSION >= v"1.10.0-DEV.1365"
11
- using LinearAlgebra: wrap
12
- else
13
- function wrap (A:: AbstractVecOrMat , tA:: AbstractChar )
14
- if tA == ' N'
15
- return A
16
- elseif tA == ' T'
17
- return transpose (A)
18
- elseif tA == ' C'
19
- return adjoint (A)
20
- elseif tA == ' H'
21
- return Hermitian (A, :U )
22
- elseif tA == ' h'
23
- return Hermitian (A, :L )
24
- elseif tA == ' S'
25
- return Symmetric (A, :U )
26
- else # tA == 's'
27
- return Symmetric (A, :L )
28
- end
29
- end
30
- end
8
+ MulAddMul, wrap
31
9
32
10
#
33
11
# BLAS 1
@@ -129,70 +107,13 @@ function LinearAlgebra.generic_matvecmul!(Y::oneVector, tA::AbstractChar, A::one
129
107
LinearAlgebra. generic_matmatmul! (Y, tA, ' N' , A, B, MulAddMul (alpha, beta))
130
108
end
131
109
132
- if VERSION < v " 1.10.0-DEV.1365"
133
- @inline LinearAlgebra. gemv! (Y:: oneVector , tA:: AbstractChar , A:: oneStridedMatrix , B:: oneStridedVector , a:: Number , b:: Number ) =
134
- LinearAlgebra. generic_matvecmul! (Y, tA, A, B, MulAddMul (a, b))
135
- # disambiguation with LinearAlgebra.jl
136
- @inline LinearAlgebra. gemv! (Y:: oneVector{T} , tA:: AbstractChar , A:: oneStridedMatrix{T} , B:: oneStridedVector{T} , a:: Number , b:: Number ) where {T<: onemklFloat } =
137
- LinearAlgebra. generic_matvecmul! (Y, tA, A, B, MulAddMul (a, b))
138
- end
139
-
140
110
# triangular
141
- if isdefined (LinearAlgebra, :generic_trimatmul! ) # VERSION >= v"1.10-DEVXYZ"
142
- # multiplication
111
+ # # multiplication
143
112
LinearAlgebra. generic_trimatmul! (c:: oneStridedVector{T} , uploc, isunitc, tfun:: Function , A:: oneStridedMatrix{T} , b:: oneStridedVector{T} ) where {T<: onemklFloat } =
144
113
trmv! (uploc, tfun === identity ? ' N' : tfun === transpose ? ' T' : ' C' , isunitc, A, c === b ? c : copyto! (c, b))
145
- # division
114
+ # # division
146
115
LinearAlgebra. generic_trimatdiv! (C:: oneStridedVector{T} , uploc, isunitc, tfun:: Function , A:: oneStridedMatrix{T} , B:: oneStridedVector{T} ) where {T<: onemklFloat } =
147
116
trsv! (uploc, tfun === identity ? ' N' : tfun === transpose ? ' T' : ' C' , isunitc, A, C === B ? C : copyto! (C, B))
148
- else
149
- # # direct multiplication/division
150
- for (t, uploc, isunitc) in ((:LowerTriangular , ' L' , ' N' ),
151
- (:UnitLowerTriangular , ' L' , ' U' ),
152
- (:UpperTriangular , ' U' , ' N' ),
153
- (:UnitUpperTriangular , ' U' , ' U' ))
154
- @eval begin
155
- # Multiplication
156
- LinearAlgebra. lmul! (A:: $t{T,<:oneStridedMatrix} ,
157
- b:: oneStridedVector{T} ) where {T<: onemklFloat } =
158
- trmv! ($ uploc, ' N' , $ isunitc, parent (A), b)
159
-
160
- # Left division
161
- LinearAlgebra. ldiv! (A:: $t{T,<:oneStridedMatrix} ,
162
- B:: oneStridedVector{T} ) where {T<: onemklFloat } =
163
- trsv! ($ uploc, ' N' , $ isunitc, parent (A), B)
164
- end
165
- end
166
- # # adjoint/transpose multiplication ('uploc' reversed)
167
- for (t, uploc, isunitc) in ((:LowerTriangular , ' U' , ' N' ),
168
- (:UnitLowerTriangular , ' U' , ' U' ),
169
- (:UpperTriangular , ' L' , ' N' ),
170
- (:UnitUpperTriangular , ' L' , ' U' ))
171
- @eval begin
172
- # Multiplication
173
- LinearAlgebra. lmul! (A:: $t{<:Any,<:Transpose{T,<:oneStridedMatrix}} ,
174
- b:: oneStridedVector{T} ) where {T<: onemklFloat } =
175
- trmv! ($ uploc, ' T' , $ isunitc, parent (parent (A)), b)
176
- LinearAlgebra. lmul! (A:: $t{<:Any,<:Adjoint{T,<:oneStridedMatrix}} ,
177
- b:: oneStridedVector{T} ) where {T<: Union{Float32,Float64} } =
178
- trmv! ($ uploc, ' T' , $ isunitc, parent (parent (A)), b)
179
- LinearAlgebra. lmul! (A:: $t{<:Any,<:Adjoint{T,<:oneStridedMatrix}} ,
180
- b:: oneStridedVector{T} ) where {T<: Union{ComplexF32,ComplexF64} } =
181
- trmv! ($ uploc, ' C' , $ isunitc, parent (parent (A)), b)
182
-
183
- # Left division
184
- LinearAlgebra. ldiv! (A:: $t{<:Any,<:Transpose{T,<:oneStridedMatrix}} ,
185
- B:: oneStridedVector{T} ) where {T<: onemklFloat } =
186
- trsv! ($ uploc, ' T' , $ isunitc, parent (parent (A)), B)
187
- LinearAlgebra. ldiv! (A:: $t{<:Any,<:Adjoint{T,<:oneStridedMatrix}} ,
188
- B:: oneStridedVector{T} ) where {T<: Union{Float32,Float64} } =
189
- trsv! ($ uploc, ' T' , $ isunitc, parent (parent (A)), B)
190
- LinearAlgebra. ldiv! (A:: $t{<:Any,<:Adjoint{T,<:oneStridedMatrix}} ,
191
- B:: oneStridedVector{T} ) where {T<: Union{ComplexF32,ComplexF64} } =
192
- trsv! ($ uploc, ' C' , $ isunitc, parent (parent (A)), B)
193
- end
194
- end
195
- end # VERSION
196
117
197
118
198
119
#
@@ -242,31 +163,7 @@ function LinearAlgebra.generic_matmatmul!(C::oneStridedMatrix, tA, tB, A::oneStr
242
163
GPUArrays. generic_matmatmul! (C, wrap (A, tA), wrap (B, tB), alpha, beta)
243
164
end
244
165
245
- if VERSION < v " 1.10.0-DEV.1365"
246
- # catch other functions that are called by LinearAlgebra's mul!
247
- LinearAlgebra. gemm_wrapper! (C:: oneStridedMatrix , tA:: AbstractChar , tB:: AbstractChar , A:: oneStridedVecOrMat , B:: oneStridedVecOrMat , _add:: MulAddMul ) =
248
- LinearAlgebra. generic_matmatmul! (C, tA, tB, A, B, _add)
249
- # disambiguation
250
- LinearAlgebra. gemm_wrapper! (C:: oneStridedMatrix{T} , tA:: AbstractChar , tB:: AbstractChar , A:: oneStridedVecOrMat{T} , B:: oneStridedVecOrMat{T} , _add:: MulAddMul ) where {T<: LinearAlgebra.BlasFloat } =
251
- LinearAlgebra. generic_matmatmul! (C, tA, tB, A, B, _add)
252
- function LinearAlgebra. syrk_wrapper! (C:: oneStridedMatrix , tA:: AbstractChar , A:: oneStridedVecOrMat , _add:: MulAddMul = MulAddMul ())
253
- if tA == ' T'
254
- LinearAlgebra. generic_matmatmul! (C, ' T' , ' N' , A, A, _add)
255
- else # tA == 'N'
256
- LinearAlgebra. generic_matmatmul! (C, ' N' , ' T' , A, A, _add)
257
- end
258
- end
259
- function LinearAlgebra. herk_wrapper! (C:: oneStridedMatrix , tA:: AbstractChar , A:: oneStridedVecOrMat , _add:: MulAddMul = MulAddMul ())
260
- if tA == ' C'
261
- LinearAlgebra. generic_matmatmul! (C, ' C' , ' N' , A, A, _add)
262
- else # tA == 'N'
263
- LinearAlgebra. generic_matmatmul! (C, ' N' , ' C' , A, A, _add)
264
- end
265
- end
266
- end # VERSION
267
-
268
166
# triangular
269
- if isdefined (LinearAlgebra, :generic_trimatmul! ) # VERSION >= v"1.10-DEVXYZ"
270
167
LinearAlgebra. generic_trimatmul! (C:: oneStridedMatrix{T} , uploc, isunitc, tfun:: Function , A:: oneStridedMatrix{T} , B:: oneStridedMatrix{T} ) where {T<: onemklFloat } =
271
168
trmm! (' L' , uploc, tfun === identity ? ' N' : tfun === transpose ? ' T' : ' C' , isunitc, one (T), A, C === B ? C : copyto! (C, B))
272
169
LinearAlgebra. generic_mattrimul! (C:: oneStridedMatrix{T} , uploc, isunitc, tfun:: Function , A:: oneStridedMatrix{T} , B:: oneStridedMatrix{T} ) where {T<: onemklFloat } =
@@ -275,25 +172,3 @@ LinearAlgebra.generic_trimatdiv!(C::oneStridedMatrix{T}, uploc, isunitc, tfun::F
275
172
trsm! (' L' , uploc, tfun === identity ? ' N' : tfun === transpose ? ' T' : ' C' , isunitc, one (T), A, C === B ? C : copyto! (C, B))
276
173
LinearAlgebra. generic_mattridiv! (C:: oneStridedMatrix{T} , uploc, isunitc, tfun:: Function , A:: oneStridedMatrix{T} , B:: oneStridedMatrix{T} ) where {T<: onemklFloat } =
277
174
trsm! (' R' , uploc, tfun === identity ? ' N' : tfun === transpose ? ' T' : ' C' , isunitc, one (T), B, C === A ? C : copyto! (C, A))
278
- else
279
- # # direct multiplication/division
280
- for (t, uploc, isunitc) in ((:LowerTriangular , ' L' , ' N' ),
281
- (:UnitLowerTriangular , ' L' , ' U' ),
282
- (:UpperTriangular , ' U' , ' N' ),
283
- (:UnitUpperTriangular , ' U' , ' U' ))
284
- @eval begin
285
- # Multiplication
286
- LinearAlgebra. lmul! (A:: $t{T,<:oneStridedMatrix} ,
287
- B:: oneStridedMatrix{T} ) where {T<: onemklFloat } =
288
- trmm! (' L' , $ uploc, ' N' , $ isunitc, one (T), parent (A), B)
289
- LinearAlgebra. rmul! (A:: oneStridedMatrix{T} ,
290
- B:: $t{T,<:oneStridedMatrix} ) where {T<: onemklFloat } =
291
- trmm! (' R' , $ uploc, ' N' , $ isunitc, one (T), parent (B), A)
292
-
293
- # Left division
294
- LinearAlgebra. ldiv! (A:: $t{T,<:oneStridedMatrix} ,
295
- B:: oneStridedMatrix{T} ) where {T<: onemklFloat } =
296
- trsm! (' L' , $ uploc, ' N' , $ isunitc, one (T), parent (A), B)
297
- end
298
- end
299
- end # VERSION
0 commit comments