@@ -1566,12 +1566,22 @@ sparse(s::UniformScaling, dims::Dims{2}) = SparseMatrixCSC(s, dims)
1566
1566
sparse (s:: UniformScaling , m:: Integer , n:: Integer ) = sparse (s, Dims ((m, n)))
1567
1567
1568
1568
# TODO : More appropriate location?
1569
- conj! (A:: SparseMatrixCSC ) = (@inbounds broadcast! (conj, A. nzval, A. nzval); A)
1570
- (- )(A:: SparseMatrixCSC ) = SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), map (- , A. nzval))
1569
+ function conj! (A:: SparseMatrixCSC )
1570
+ map! (conj, nzvalview (A), nzvalview (A))
1571
+ return A
1572
+ end
1573
+ function (- )(A:: SparseMatrixCSC )
1574
+ nzval = similar (A. nzval)
1575
+ map! (- , view (nzval, 1 : nnz (A)), nzvalview (A))
1576
+ return SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), nzval)
1577
+ end
1571
1578
1572
1579
# the rest of real, conj, imag are handled correctly via AbstractArray methods
1573
- conj (A:: SparseMatrixCSC{<:Complex} ) =
1574
- SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), conj (A. nzval))
1580
+ function conj (A:: SparseMatrixCSC{<:Complex} )
1581
+ nzval = similar (A. nzval)
1582
+ map! (conj, view (nzval, 1 : nnz (A)), nzvalview (A))
1583
+ return SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), nzval)
1584
+ end
1575
1585
imag (A:: SparseMatrixCSC{Tv,Ti} ) where {Tv<: Real ,Ti} = spzeros (Tv, Ti, A. m, A. n)
1576
1586
1577
1587
# # Binary arithmetic and boolean operators
0 commit comments