1function gbtest53 2%GBTEST53 test GrB.monoidinfo 3 4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 5% SPDX-License-Identifier: GPL-3.0-or-later 6 7types10 = { 8 'double' 9 'single' 10 'int8' 11 'int16' 12 'int32' 13 'int64' 14 'uint8' 15 'uint16' 16 'uint32' 17 'uint64' 18 } ; 19 20nmonoids = 0 ; 21 22% 50 real monoids (integer and floating-point, not logical): 23ops = { '+', '*', 'min', 'max', 'any' } ; 24for k1 = 1:5 25 op = ops {k1} ; 26 fprintf ('\nop ( %s )=============================================\n', op) ; 27 for k2 = 1:10 28 type = types10 {k2} ; 29 GrB.monoidinfo ([op '.' type]) ; 30 GrB.monoidinfo (op, type) ; 31 nmonoids = nmonoids + 1 ; 32 end 33end 34 35% 5 boolean monoids: 36ops = { '|', '&', 'xor', 'xnor', 'any' } ; 37for k1 = 1:5 38 op = ops {k1} ; 39 fprintf ('\nop ( %s )=============================================\n', op) ; 40 GrB.monoidinfo ([op '.logical']) ; 41 GrB.monoidinfo (op, 'logical') ; 42 nmonoids = nmonoids + 1 ; 43end 44 45% 6 complex 46ops = { '+', '*', 'any' } ; 47types = { 'single complex', 'double complex' } ; 48for k1 = 1:3 49 op = ops {k1} ; 50 fprintf ('\nop ( %s )=============================================\n', op) ; 51 for k2 = 1:2 52 type = types {k2} ; 53 GrB.monoidinfo ([op '.' type]) ; 54 GrB.monoidinfo (op, type) ; 55 nmonoids = nmonoids + 1 ; 56 end 57end 58 59% 16 bitwise 60ops = { 'bitor', 'bitand', 'bitxor', 'bitxnor' } ; 61types = { 'uint8', 'uint16', 'uint32', 'uint64' } ; 62for k1 = 1:4 63 op = ops {k1} ; 64 fprintf ('\nop ( %s )=============================================\n', op) ; 65 for k2 = 1:4 66 type = types {k2} ; 67 GrB.monoidinfo ([op '.' type]) ; 68 GrB.monoidinfo (op, type) ; 69 nmonoids = nmonoids + 1 ; 70 end 71end 72 73fprintf ('\n\n') ; 74GrB.monoidinfo 75 76fprintf ('number of monoids: %d\n', nmonoids) ; 77assert (nmonoids == 77) ; 78 79fprintf ('gbtest53: all tests passed\n') ; 80 81