@@ -1036,12 +1036,12 @@ end
1036
1036
"""
1037
1037
Helper macro for the unary broadcast definitions below. Takes parent method `fp` and a set
1038
1038
of desired child methods `fcs`, and builds an expression defining each of the child methods
1039
- such that `fc( A::SparseMatrixCSC) = fp(fc, A)`.
1039
+ such that `broadcast(::typeof(fc), A::SparseMatrixCSC) = fp(fc, A)`.
1040
1040
"""
1041
1041
macro _enumerate_childmethods (fp, fcs... )
1042
1042
fcexps = Expr (:block )
1043
1043
for fc in fcs
1044
- push! (fcexps. args, :( $ (esc (fc))( A:: SparseMatrixCSC ) = $ (esc (fp))($ (esc (fc)), A) ) )
1044
+ push! (fcexps. args, :( broadcast ( :: typeof ( $ (esc (fc))), A:: SparseMatrixCSC ) = $ (esc (fp))($ (esc (fc)), A) ) )
1045
1045
end
1046
1046
return fcexps
1047
1047
end
@@ -1080,10 +1080,10 @@ end
1080
1080
sin, sinh, sind, asin, asinh, asind,
1081
1081
tan, tanh, tand, atan, atanh, atand,
1082
1082
sinpi, cosc, ceil, floor, trunc, round)
1083
- real ( A:: SparseMatrixCSC ) = copy (A)
1084
- imag {Tv,Ti} (A:: SparseMatrixCSC{Tv,Ti} ) = spzeros (Tv, Ti, A. m, A. n)
1085
- real {TTv} (A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2z_z2z_T (real, A, TTv)
1086
- imag {TTv} (A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2z_z2z_T (imag, A, TTv)
1083
+ broadcast ( :: typeof (real), A:: SparseMatrixCSC ) = copy (A)
1084
+ broadcast {Tv,Ti} (:: typeof (imag), A:: SparseMatrixCSC{Tv,Ti} ) = spzeros (Tv, Ti, A. m, A. n)
1085
+ broadcast {TTv} (:: typeof (real), A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2z_z2z_T (real, A, TTv)
1086
+ broadcast {TTv} (:: typeof (imag), A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2z_z2z_T (imag, A, TTv)
1087
1087
ceil {To} (:: Type{To} , A:: SparseMatrixCSC ) = _broadcast_unary_nz2z_z2z_T (ceil, A, To)
1088
1088
floor {To} (:: Type{To} , A:: SparseMatrixCSC ) = _broadcast_unary_nz2z_z2z_T (floor, A, To)
1089
1089
trunc {To} (:: Type{To} , A:: SparseMatrixCSC ) = _broadcast_unary_nz2z_z2z_T (trunc, A, To)
@@ -1110,10 +1110,10 @@ function _broadcast_unary_nz2nz_z2z{Tv}(f::Function, A::SparseMatrixCSC{Tv})
1110
1110
end
1111
1111
@_enumerate_childmethods (_broadcast_unary_nz2nz_z2z,
1112
1112
log1p, expm1, abs, abs2, conj)
1113
- abs2 {TTv} (A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs2, A, TTv)
1114
- abs {TTv} (A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs, A, TTv)
1115
- abs {TTv<:Integer} (A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs, A, Float64)
1116
- abs {TTv<:BigInt} (A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs, A, BigFloat)
1113
+ broadcast {TTv} (:: typeof (abs2), A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs2, A, TTv)
1114
+ broadcast {TTv} (:: typeof (abs), A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs, A, TTv)
1115
+ broadcast {TTv<:Integer} (:: typeof (abs), A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs, A, Float64)
1116
+ broadcast {TTv<:BigInt} (:: typeof (abs), A:: SparseMatrixCSC{Complex{TTv}} ) = _broadcast_unary_nz2nz_z2z_T (abs, A, BigFloat)
1117
1117
function conj! (A:: SparseMatrixCSC )
1118
1118
@inbounds @simd for k in 1 : nnz (A)
1119
1119
A. nzval[k] = conj (A. nzval[k])
@@ -1450,7 +1450,7 @@ end # macro
1450
1450
(.^ )(A:: SparseMatrixCSC , B:: Number ) =
1451
1451
B== 0 ? sparse (ones (typeof (one (eltype (A)).^ B), A. m, A. n)) :
1452
1452
SparseMatrixCSC (A. m, A. n, copy (A. colptr), copy (A. rowval), A. nzval .^ B)
1453
- (.^ )(:: Irrational{:e} , B:: SparseMatrixCSC ) = exp (B)
1453
+ (.^ )(:: Irrational{:e} , B:: SparseMatrixCSC ) = exp . (B)
1454
1454
(.^ )(A:: Number , B:: SparseMatrixCSC ) = (.^ )(A, full (B))
1455
1455
(.^ )(A:: SparseMatrixCSC , B:: Array ) = (.^ )(full (A), B)
1456
1456
(.^ )(A:: Array , B:: SparseMatrixCSC ) = (.^ )(A, full (B))
0 commit comments