1function test54 2%TEST54 test GB_subref (numeric case) with I=lo:hi, J=lo:hi 3 4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 5% SPDX-License-Identifier: Apache-2.0 6 7fprintf ('\ntest54: ==== quick test for subref and assign (lo:stride:hi):\n') ; 8clear 9 10m = 5 ; 11n = 7 ; 12A = sprandn (m,n,0.4) ; 13 14for ilo = 1:m 15 for ihi = ilo:m 16 for jlo = 1:n 17 for jhi = jlo:m 18 19 C = A (ilo:ihi,jlo:jhi) ; 20 21 I1 = uint64 (ilo:ihi) - 1 ; 22 J1 = uint64 (jlo:jhi) - 1 ; 23 C1 = GB_mex_Matrix_subref (A, I1, J1) ; 24 assert (isequal (C, C1)) ; 25 26 I2.begin = ilo-1 ; 27 I2.end = ihi-1 ; 28 J2.begin = jlo-1 ; 29 J2.end = jhi-1 ; 30 C2 = GB_mex_Matrix_subref (A, I2, J2) ; 31 assert (isequal (C, C2)) ; 32 33 end 34 end 35 end 36end 37 38C = sprandn (m, n, 0.4) ; 39 40for ilo = 1:m 41 for ihi = ilo:m 42 43 sm = ihi-ilo+1 ; 44 S = sprandn (sm, n, 0.4) ; 45 46 C0 = C ; 47 C0 (ilo:ihi,:) = S ; 48 49 I1 = uint64 (ilo:ihi) - 1 ; 50 C1 = GB_mex_subassign (C, [ ], [ ], S, I1, [ ], [ ]) ; 51 assert (isequal (C0, C1.matrix)) ; 52 53 C1b = GB_mex_assign (C, [ ], [ ], S, I1, [ ], [ ]) ; 54 assert (isequal (C0, C1b.matrix)) ; 55 56 I2.begin = ilo-1 ; 57 I2.end = ihi-1 ; 58 C2 = GB_mex_subassign (C, [ ], [ ], S, I2, [ ], [ ]) ; 59 assert (isequal (C0, C2.matrix)) ; 60 61 C2b = GB_mex_assign (C, [ ], [ ], S, I2, [ ], [ ]) ; 62 assert (isequal (C0, C2b.matrix)) ; 63 64 S = sprandn (m, sm, 0.4) ; 65 66 C0 = C ; 67 C0 (:,ilo:ihi) = S ; 68 69 C1 = GB_mex_subassign (C, [ ], [ ], S, [ ], I1, [ ]) ; 70 assert (isequal (C0, C1.matrix)) ; 71 72 C1b = GB_mex_assign (C, [ ], [ ], S, [ ], I1, [ ]) ; 73 assert (isequal (C0, C1b.matrix)) ; 74 75 C2 = GB_mex_subassign (C, [ ], [ ], S, [ ], I2, [ ]) ; 76 assert (isequal (C0, C2.matrix)) ; 77 78 C2b = GB_mex_assign (C, [ ], [ ], S, [ ], I2, [ ]) ; 79 assert (isequal (C0, C2b.matrix)) ; 80 81 for jlo = 1:n 82 for jhi = jlo:n 83 84 sm = ihi-ilo+1 ; 85 sn = jhi-jlo+1 ; 86 S = sprandn (sm, sn, 0.4) ; 87 88 C0 = C ; 89 C0 (ilo:ihi,jlo:jhi) = S ; 90 91 I1 = uint64 (ilo:ihi) - 1 ; 92 J1 = uint64 (jlo:jhi) - 1 ; 93 C1 = GB_mex_subassign (C, [ ], [ ], S, I1, J1, [ ]) ; 94 assert (isequal (C0, C1.matrix)) ; 95 96 C1b = GB_mex_assign (C, [ ], [ ], S, I1, J1, [ ]) ; 97 assert (isequal (C0, C1b.matrix)) ; 98 99 I2.begin = ilo-1 ; 100 I2.end = ihi-1 ; 101 J2.begin = jlo-1 ; 102 J2.end = jhi-1 ; 103 C2 = GB_mex_subassign (C, [ ], [ ], S, I2, J2, [ ]) ; 104 assert (isequal (C0, C2.matrix)) ; 105 106 C2b = GB_mex_assign (C, [ ], [ ], S, I2, J2, [ ]) ; 107 assert (isequal (C0, C2b.matrix)) ; 108 109 end 110 end 111 end 112end 113 114clear C0 C1 C1b C2 C2b I1 J1 I2 J2 115 116fprintf ('longer tests: ') ; 117jinc_list = unique ([-1 1 3]) ; 118 119for ibegin = 1:m 120 for iend = 1:m 121 for iinc = -m:m 122 123 I = ibegin:iinc:iend ; 124 I1.begin = ibegin - 1 ; 125 I1.inc = iinc ; 126 I1.end = iend - 1 ; 127 128 fprintf ('.') ; 129 130 for jbegin = 1:3:n 131 for jend = 1:3:n 132 for jinc = jinc_list 133 134 J = jbegin:jinc:jend ; 135 J1.begin = jbegin - 1 ; 136 J1.inc = jinc ; 137 J1.end = jend - 1 ; 138 139 sm = length (I) ; 140 sn = length (J) ; 141 S = sprandn (sm, sn, 0.4) ; 142 143 C0 = C ; 144 C0 (I,J) = S ; 145 146 % fprintf ('\nsubassign:\n') ; 147 C1 = GB_mex_subassign (C, [ ], [ ], S, I1, J1, [ ]) ; 148 assert (isequal (C0, C1.matrix)) ; 149 150 % fprintf ('\nassign:\n') ; 151 C2 = GB_mex_assign (C, [ ], [ ], S, I1, J1, [ ]) ; 152 assert (isequal (C0, C2.matrix)) ; 153 154 R = C(I,J) ; 155 R1 = GB_mex_Matrix_subref (C, I1, J1) ; 156 assert (isequal (R, R1)) ; 157 158 end 159 end 160 end 161 end 162 end 163end 164 165 166fprintf ('\ntest54: all tests passed\n') ; 167