@@ -64,13 +64,46 @@ function Base.copy!(
6464 return gbtranspose! (C, A. parent; mask, accum, desc)
6565end
6666
67+ """
68+ mask!(C::GBArray, A::GBArray, mask::GBArray)
69+
70+ Apply a mask to matrix `A`, storing the results in C.
71+ """
72+ function mask! (C:: GBArray , A:: GBArray , mask:: GBArray ; structural = false , complement = false )
73+ desc = Descriptors. T0
74+ structural && (desc = desc + Descriptors. S)
75+ complement && (desc = desc + Descriptors. C)
76+ gbtranspose! (C, A; mask, desc)
77+ return C
78+ end
79+
80+ """
81+ mask(A::GBArray, mask::GBArray)
82+
83+ Apply a mask to matrix `A`.
84+ """
85+ function mask (A:: GBArray , mask:: GBArray ; structural = false , complement = false )
86+ return mask! (similar (A), A, mask; structural, complement)
87+ end
88+
6789function Base. copy (
6890 A:: LinearAlgebra.Transpose{<:Any, <:GBMatrix} ;
6991 mask = C_NULL , accum = C_NULL , desc:: Descriptor = Descriptors. NULL
7092)
7193 return gbtranspose (A. parent; mask, accum, desc)
7294end
7395
96+ function Base. copy (v:: LinearAlgebra.Transpose{<:Any, <:GBVector} )
97+ A = GBMatrix {eltype(v)} (size (v, 1 ), size (v, 2 ))
98+ nz = findnz (v. parent)
99+ for i ∈ 1 : length (nz[1 ])
100+ println (i)
101+ println (nz[1 ][i], " : " , nz[2 ][i])
102+ A[1 , nz[1 ][i]] = nz[2 ][i]
103+ end
104+ return A
105+ end
106+
74107function _handletranspose (
75108 A:: GBArray ,
76109 desc:: Union{Descriptor, Nothing} = nothing ,
0 commit comments