1function gbtest14 2%GBTEST14 test kron and GrB.kronecker 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') ; 8A = sparse (rand (2,3)) ; 9B = sparse (rand (4,8)) ; 10 11GA = GrB (A) ; 12GB = GrB (B) ; 13 14C = kron (A,B) ; 15G = GrB.kronecker ('*', A, B) ; 16err = norm (C-G, 1) ; 17assert (err < 1e-12) 18 19G = kron (GA, GB) ; 20err = norm (C-G, 1) ; 21assert (err < 1e-12) 22 23d.kind = 'sparse' ; 24d.in0 = 'transpose' ; 25 26G = GrB.kronecker ('*', A, B, d) ; 27C = kron (A', B) ; 28err = norm (C-G, 1) ; 29assert (err < 1e-12) 30G = kron (GA', GB) ; 31err = norm (C-G, 1) ; 32assert (err < 1e-12) 33d.kind = 'GrB' ; 34G = GrB.kronecker ('*', A, B, d) ; 35err = norm (C-G, 1) ; 36assert (err < 1e-12) ; 37 38d2 = d ; 39d2.in1 = 'transpose' ; 40G = GrB.kronecker ('*', A, B, d2) ; 41C = kron (A', B') ; 42err = norm (C-G, 1) ; 43assert (err < 1e-12) 44G = kron (GA', GB') ; 45err = norm (C-G, 1) ; 46assert (err < 1e-12) 47 48E = sparse (rand (8,24)) ; 49C = E + kron (A,B) ; 50G = GrB.kronecker (E, '+', '*', A, B) ; 51err = norm (C-G, 1) ; 52assert (err < 1e-12) 53G = E + kron (GA, GB) ; 54err = norm (C-G, 1) ; 55assert (err < 1e-12) 56 57[m, n] = size (G) ; 58M = logical (sprand (m, n, 0.5)) ; 59C = sprand (m, n, 0.5) ; 60G = GrB (C) ; 61T = C + kron (A,B) ; 62C (M) = T (M) ; 63G = GrB.kronecker (G, M, '+', '*', A, B) ; 64err = norm (C-G, 1) ; 65assert (err < 1e-12) 66 67C = sprand (m, n, 0.5) ; 68G = GrB (C) ; 69T = kron (A,B) ; 70C (M) = T (M) ; 71G2 = GrB.kronecker (G, M, '*', A, B) ; 72err = norm (C-G2, 1) ; 73assert (err < 1e-12) 74 75fprintf ('gbtest14: all tests passed\n') ; 76 77