1function gbtest31 2%GBTEST31 test GrB and casting 3 4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 5% SPDX-License-Identifier: GPL-3.0-or-later 6 7types = gbtest_types ; 8fprintf ('gbtest31: typecasting\n') ; 9rng ('default') ; 10 11for k = 1:length (types) 12 type = types {k} ; 13 fprintf ('%s ', type) ; 14 15 for m = 0:5 16 for n = 0:5 17 A = gbtest_cast (zeros (m, n), type) ; 18 G = GrB (m, n, type) ; 19 C = GrB (G, type) ; 20 assert (gbtest_eq (A, C)) ; 21 end 22 end 23 24 A = 100 * rand (5, 5) ; 25 A = gbtest_cast (A, type) ; 26 G = GrB (A) ; 27 28 G2 = sparse (G) ; 29 assert (gbtest_eq (G, G2)) ; 30 31 for k2 = 1:length (types) 32 type2 = types {k} ; 33 G2 = GrB (G, type2) ; 34 A2 = gbtest_cast (A, type2) ; 35 C = GrB (G2, type2) ; 36 assert (gbtest_eq (A2, C)) ; 37 end 38 39 F = 100 * ones (5, 5) ; 40 F = gbtest_cast (F, type) ; 41 id = F (1,1) ; 42 43 A = 100 * sparse (diag (1:5)) ; 44 45 G = GrB (A, type) ; 46 G2 = GrB (F) ; 47 G2 (logical (speye (5))) = 100:100:500 ; 48 49 for k2 = 1:length (types) 50 type2 = types {k} ; 51 G3 = full (G, type2, id) ; 52 H5 = full (G, type2, GrB (id)) ; 53 G4 = GrB (G2, type2) ; 54 assert (gbtest_eq (G3, G4)) ; 55 assert (gbtest_eq (G3, H5)) ; 56 assert (gbtest_eq (double (G3), double (G4))) ; 57 assert (gbtest_eq (single (G3), single (G4))) ; 58 assert (gbtest_eq (uint16 (G3), uint16 (G4))) ; 59 end 60 61end 62 63fprintf ('\ngbtest31: all tests passed\n') ; 64