1function gbtest13 2%GBTEST13 test find and GrB.extracttuples 3 4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 5% SPDX-License-Identifier: GPL-3.0-or-later 6 7list = gbtest_types ; 8 9A = 100 * rand (3) ; 10[I, J, X] = find (A) ; %#ok<*ASGLU> 11I_0 = int64 (I) - 1 ; 12J_0 = int64 (J) - 1 ; 13A (1,1) = 0 ; 14 15desc_default.base = 'default' ; 16desc0.base = 'zero-based' ; 17desc1.base = 'one-based' ; 18desc1_int.base = 'one-based int' ; 19 20for k = 1:length(list) 21 xtype = list {k} ; 22 fprintf ('%s ', xtype) ; 23 C = gbtest_cast (A, xtype) ; 24 G = GrB (C) ; 25 26 [I1, J1, X1] = find (G) ; 27 nz = find (C (:) ~= 0) ; 28 assert (isequal (C (nz), X1)) ; 29 assert (isequal (I (nz), I1)) ; 30 assert (isequal (J (nz), J1)) ; 31 32 [I1, J1] = find (G) ; 33 nz = find (C (:) ~= 0) ; 34 assert (isequal (I (nz), I1)) ; 35 assert (isequal (J (nz), J1)) ; 36 37 [I0, J0, X0] = GrB.extracttuples (G, desc0) ; 38 assert (isequal (C (:), X0)) ; 39 assert (isequal (I_0, I0)) ; 40 assert (isequal (J_0, J0)) ; 41 42 [I1, J1, X0] = GrB.extracttuples (G, desc1) ; 43 assert (isequal (C (:), X0)) ; 44 assert (isequal (double (I_0+1), I1)) ; 45 assert (isequal (double (J_0+1), J1)) ; 46 47 [I1, J1, X0] = GrB.extracttuples (G, desc1_int) ; 48 assert (isequal (C (:), X0)) ; 49 assert (isequal (I_0+1, I1)) ; 50 assert (isequal (J_0+1, J1)) ; 51 52 [I1, J1, X0] = GrB.extracttuples (G, desc_default) ; 53 assert (isequal (C (:), X0)) ; 54 assert (isequal (double (I_0+1), I1)) ; 55 assert (isequal (double (J_0+1), J1)) ; 56 57 [I1, J1, X0] = GrB.extracttuples (G) ; 58 assert (isequal (C (:), X0)) ; 59 assert (isequal (double (I_0+1), I1)) ; 60 assert (isequal (double (J_0+1), J1)) ; 61 62 [I1, J1] = GrB.extracttuples (G) ; 63 assert (isequal (double (I_0+1), I1)) ; 64 assert (isequal (double (J_0+1), J1)) ; 65 66 [I1] = GrB.extracttuples (G, desc0) ; 67 assert (isequal (I1, I0)) ; 68end 69 70v = rand (1,3) ; 71[i1, j1, x1] = find (v) ; 72[i2, j2, x2] = find (GrB (v)) ; 73assert (isequal (x1, x2)) ; 74assert (isequal (i1, i2)) ; 75assert (isequal (j1, j2)) ; 76 77[i2, j2] = find (GrB (v)) ; 78assert (isequal (i1, i2)) ; 79assert (isequal (j1, j2)) ; 80 81j1 = find (v) ; 82j2 = find (GrB (v)) ; 83assert (isequal (j1, j2)) ; 84 85G = GrB.prune (GrB (A, 'by row')) ; 86[i1, j1, x1] = find (A, 4) ; 87[i2, j2, x2] = find (G, 4) ; 88assert (isequal (x1, x2)) ; 89assert (isequal (i1, i2)) ; 90assert (isequal (j1, j2)) ; 91 92[i1, j1, x1] = find (A, 4, 'last') ; 93[i2, j2, x2] = find (G, 4, 'last') ; 94assert (isequal (x1, x2)) ; 95assert (isequal (i1, i2)) ; 96assert (isequal (j1, j2)) ; 97 98fprintf ('\ngbtest13: all tests passed\n') ; 99 100