@@ -65,7 +65,12 @@ void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const ui
6565 * z = (x -> age > * y );
6666 }
6767}
68-
68+ void check_payment_system (bool * z , const Card * x , GrB_Index _i , GrB_Index _j , const uint8_t * y )
69+ {
70+ {
71+ * z = ((x -> system ) == MIR );
72+ }
73+ }
6974void owns_bool_mult (bool * z , const bool * x , const EdgeOwns * y )
7075{
7176 * z = * x ;
@@ -175,8 +180,8 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards)
175180{
176181 GrB_Info info ;
177182 // 1 - 4 & 10 --- users
178- User user1 = {MALE , 52 };
179- User user2 = {MALE , 25 };
183+ User user1 = {FEMALE , 52 };
184+ User user2 = {FEMALE , 25 };
180185 User user3 = {FEMALE , 40 };
181186 User user4 = {MALE , 42 };
182187 User user10 = {MALE , 35 };
@@ -191,9 +196,9 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards)
191196 Card card6 = {MIR , 700000.0 };
192197 Card card7 = {VISA , 800000.0 };
193198 Card card8 = {MASTERCARD , 900000.0 };
194- Card card9 = {MASTERCARD , 10000000.0 };
195- Card card11 = {MASTERCARD , 99000000.0 };
196- Card card12 = {MASTERCARD , 99000000.0 };
199+ Card card9 = {VISA , 10000000.0 };
200+ Card card11 = {MIR , 99000000.0 };
201+ Card card12 = {MIR , 99000000.0 };
197202 TRY (GrB_Vector_setElement_UDT (* cards , & card5 , 4 ));
198203 TRY (GrB_Vector_setElement_UDT (* cards , & card6 , 5 ));
199204 TRY (GrB_Vector_setElement_UDT (* cards , & card7 , 6 ));
@@ -265,7 +270,7 @@ int main()
265270 TRY (GrB_Vector_apply_IndexOp_UDT (v , NULL , NULL , user_age , users , & age , NULL ));
266271 GxB_print (v , GxB_COMPLETE );
267272 TRY (GrB_Matrix_diag (& ID , v , 0 ));
268-
273+
269274 // ------------------------------------------------------------------------
270275 // apply user filters
271276 // ------------------------------------------------------------------------
@@ -298,7 +303,18 @@ int main()
298303 // ------------------------------------------------------------------------
299304 // build filter for tx matrix
300305 // ------------------------------------------------------------------------
306+
307+ // get cards with MIR payment system only
301308 TRY (GrB_Matrix_free (& ID ));
309+ TRY (GrB_Vector_free (& v ));
310+ TRY (GrB_Vector_new (& v , GrB_BOOL , VERTICES_NUMBER ));
311+ TRY (GrB_Vector_assign_BOOL (v , NULL , NULL , false, GrB_ALL , VERTICES_NUMBER , NULL ));
312+ GrB_IndexUnaryOp payment_system ;
313+ TRY (GrB_IndexUnaryOp_new (& payment_system , (GxB_index_unary_function )& check_payment_system , GrB_BOOL , card , GrB_UINT8 ));
314+ uint8_t pay_sys = MIR ;
315+ TRY (GrB_Vector_apply_IndexOp_UDT (v , NULL , NULL , payment_system , cards , & pay_sys , NULL ));
316+ TRY (GrB_Vector_eWiseMult_BinaryOp (filtered_cards , NULL , NULL , GrB_LAND , filtered_cards , v , NULL ));
317+
302318 TRY (GrB_Matrix_diag (& ID , filtered_cards , 0 ));
303319 GxB_print (ID , GxB_COMPLETE );
304320
0 commit comments