@@ -1503,12 +1503,22 @@ sparse(s::UniformScaling, dims::Dims{2}) = SparseMatrixCSC(s, dims)
1503
1503
sparse (s:: UniformScaling , m:: Integer , n:: Integer ) = sparse (s, Dims ((m, n)))
1504
1504
1505
1505
# TODO : More appropriate location?
1506
- conj! (A:: SparseMatrixCSC ) = (@inbounds broadcast! (conj, A. nzval, A. nzval); A)
1507
- (- )(A:: SparseMatrixCSC ) = SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), map (- , A. nzval))
1506
+ function conj! (A:: SparseMatrixCSC )
1507
+ map! (conj, view (A. nzval, 1 : nnz (A)), view (A. nzval, 1 : nnz (A)))
1508
+ return A
1509
+ end
1510
+ function (- )(A:: SparseMatrixCSC )
1511
+ nzval = similar (A. nzval)
1512
+ map! (- , view (nzval, 1 : nnz (A)), view (A. nzval, 1 : nnz (A)))
1513
+ return SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), nzval)
1514
+ end
1508
1515
1509
1516
# the rest of real, conj, imag are handled correctly via AbstractArray methods
1510
- conj (A:: SparseMatrixCSC{<:Complex} ) =
1511
- SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), conj (A. nzval))
1517
+ function conj (A:: SparseMatrixCSC{<:Complex} )
1518
+ nzval = similar (A. nzval)
1519
+ map! (conj, view (nzval, 1 : nnz (A)), view (A. nzval, 1 : nnz (A)))
1520
+ return SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), nzval)
1521
+ end
1512
1522
imag (A:: SparseMatrixCSC{Tv,Ti} ) where {Tv<: Real ,Ti} = spzeros (Tv, Ti, A. m, A. n)
1513
1523
1514
1524
# # Binary arithmetic and boolean operators
0 commit comments