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