@@ -1380,11 +1380,21 @@ end
1380
1380
end
1381
1381
return z
1382
1382
end
1383
- # due to the sparse result type, there is no risk to override dense ⊗ dense here
1384
- @inline function kron! (C:: SparseMatrixCSC , A:: Union{_SparseKronGroup,_DenseConcatGroup} , B:: Union{_SparseKronGroup,_DenseConcatGroup} )
1383
+ kron! (C:: SparseMatrixCSC , A:: _SparseKronGroup , B:: _DenseConcatGroup ) =
1385
1384
kron! (C, convert (SparseMatrixCSC, A), convert (SparseMatrixCSC, B))
1386
- end
1387
- kron! (C:: SparseMatrixCSC , A:: SparseVectorUnion , B:: AdjOrTransSparseVectorUnion ) = broadcast! (* , C, A, B)
1385
+ kron! (C:: SparseMatrixCSC , A:: _DenseConcatGroup , B:: _SparseKronGroup ) =
1386
+ kron! (C, convert (SparseMatrixCSC, A), convert (SparseMatrixCSC, B))
1387
+ kron! (C:: SparseMatrixCSC , A:: _SparseKronGroup , B:: _SparseKronGroup ) =
1388
+ kron! (C, convert (SparseMatrixCSC, A), convert (SparseMatrixCSC, B))
1389
+ kron! (C:: SparseMatrixCSC , A:: SparseVectorUnion , B:: AdjOrTransSparseVectorUnion ) =
1390
+ broadcast! (* , C, A, B)
1391
+ # disambiguation
1392
+ kron! (C:: SparseMatrixCSC , A:: _SparseKronGroup , B:: Diagonal ) =
1393
+ kron! (C, convert (SparseMatrixCSC, A), convert (SparseMatrixCSC, B))
1394
+ kron! (C:: SparseMatrixCSC , A:: Diagonal , B:: _SparseKronGroup ) =
1395
+ kron! (C, convert (SparseMatrixCSC, A), convert (SparseMatrixCSC, B))
1396
+ kron! (c:: SparseMatrixCSC , a:: Number , b:: _SparseKronGroup ) = mul! (c, a, b)
1397
+ kron! (c:: SparseMatrixCSC , a:: _SparseKronGroup , b:: Number ) = mul! (c, a, b)
1388
1398
1389
1399
function kron (A:: AbstractSparseMatrixCSC , B:: AbstractSparseMatrixCSC )
1390
1400
mA, nA = size (A)
@@ -1410,6 +1420,9 @@ kron(A::_SparseKronGroup, B::_SparseKronGroup) =
1410
1420
kron (A:: _SparseKronGroup , B:: _DenseConcatGroup ) = kron (A, sparse (B))
1411
1421
kron (A:: _DenseConcatGroup , B:: _SparseKronGroup ) = kron (sparse (A), B)
1412
1422
kron (A:: SparseVectorUnion , B:: AdjOrTransSparseVectorUnion ) = A .* B
1423
+ # disambiguation
1424
+ kron (a:: Number , b:: _SparseKronGroup ) = a * b
1425
+ kron (a:: _SparseKronGroup , b:: Number ) = a * b
1413
1426
1414
1427
# # det, inv, cond
1415
1428
0 commit comments