1function gbtest16 2%GBTEST16 test GrB.extract 3 4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 5% SPDX-License-Identifier: GPL-3.0-or-later 6 7rng ('default') ; 8 9n = 6 ; 10A = 100 * sprand (n, n, 0.5) ; 11AT = A' ; 12M = sparse (rand (n)) > 0.5 ; 13Cin = sprand (n, n, 0.5) ; 14 15Cout = GrB.extract (Cin, A) ; 16assert (gbtest_eq (A, Cout)) ; 17 18Cout = GrB.extract (Cin, A, { }, { }) ; 19assert (gbtest_eq (A, Cout)) ; 20 21Cout = GrB.extract (A, {n, -1, 1}, {n, -1, 1}) ; 22assert (gbtest_eq (A (n:-1:1, n:-1:1), Cout)) ; 23 24Cout = GrB.extract (Cin, M, A) ; 25C2 = Cin ; 26C2 (M) = A (M) ; 27assert (gbtest_eq (C2, Cout)) ; 28 29Cout = GrB.extract (Cin, '+', A) ; 30C2 = Cin + A ; 31assert (gbtest_eq (C2, Cout)) ; 32 33d.in0 = 'transpose' ; 34Cout = GrB.extract (Cin, M, A, d) ; 35C2 = Cin ; 36C2 (M) = AT (M) ; 37assert (gbtest_eq (C2, Cout)) ; 38 39Cout = GrB.extract (Cin, '+', A, d) ; 40C2 = Cin + AT ; 41assert (gbtest_eq (C2, Cout)) ; 42 43d.mask = 'complement' ; 44d2 = d ; 45d2.kind = 'sparse' ; 46Cout = GrB.extract (Cin, M, A, d) ; 47Cout2 = GrB.extract (Cin, M, A, d2) ; 48C2 = Cin ; 49C2 (~M) = AT (~M) ; 50assert (gbtest_eq (C2, Cout)) ; 51assert (gbtest_eq (C2, Cout2)) ; 52assert (isequal (class (Cout2), 'double')) ; 53 54I = [2 1 5] ; 55J = [3 3 1 2] ; 56% B = sprandn (length (I), length (J), 0.5) ; 57Cout = GrB.extract (A, {I}, {J}) ; 58C2 = A (I,J) ; 59assert (gbtest_eq (C2, Cout)) ; 60 61G = GrB.random (1, 10, inf) ; 62A = double (G) ; 63C0 = A (1:3) ; 64C1 = GrB.extract (G, { 1, 3}) ; 65assert (isequal (C0, C1)) ; 66 67G = GrB.random (10, 1, inf) ; 68A = double (G) ; 69C0 = A (1:3) ; 70C1 = GrB.extract (G, { 1, 3}) ; 71assert (isequal (C0, C1)) ; 72 73fprintf ('gbtest16: all tests passed\n') ; 74 75