1 //------------------------------------------------------------------------------
2 // GB_control.h:  disable hard-coded functions to reduce code size
3 //------------------------------------------------------------------------------
4 
5 // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
6 // SPDX-License-Identifier: Apache-2.0
7 
8 //------------------------------------------------------------------------------
9 
10 // The installer of SuiteSparse:GraphBLAS can edit this file to reduce the code
11 // size of the compiled library, by disabling the corresonding hard-coded
12 // functions in Source/Generated.  For example, if SuiteSparse:GraphBLAS is
13 // integrated into an application that makes no use of the GrB_INT16 data type,
14 // or just occassional use where performance is not a concern, then uncomment
15 // the line "#define GxB_NO_INT16 1".  Alternatively, SuiteSparse:GraphBLAS can
16 // be compiled with a list of options, such as -DGxB_NO_INT16=1, which does the
17 // same thing.
18 
19 // GraphBLAS will still work as expected.  It will simply use a generic method
20 // instead of the type- or operator-specific code.  It will be slower, by about
21 // 2x or 3x, depending on the operation. but its results will be the same.  A
22 // few operations will be 10x slower, such as GrB_reduce to scalar using the
23 // GrB_MAX_FP64 operator.
24 
25 // Enabling the "#define GBCOMPACT" option is the same as uncommenting this
26 // entire file.  This file provides a more concise control over which
27 // types, operators, and semirings are given fast hard-coded versions in
28 // Source/Generated, and which use the slower generic methods.
29 
30 // However, the code size can be reduced significantly.  Uncommenting all of
31 // the options below cuts the code from 55MB to under 2.7MB, on a MacBook Pro
32 // using gcc 8.2.0 (as of the draft V3.0.0 version, June 18, 2019).  Disabling
33 // all types except GxB_NO_FP64 results in a code size of 7.8MB.
34 
35 // Note that some semirings are renamed.  For example, C=A*B when all matrices
36 // are in CSC format, uses the semiring as-is.  If all matrices are in CSR
37 // format instead, then C'=B'*A' is computed, treating the internal matrices
38 // as if they are in CSC format.  To accomplish this, the semiring may be
39 // "flipped", if the multiply operator is not commutative.  That is,
40 // the GxB_PLUS_FIRST_* semiring is replaced with GxB_PLUS_SECOND_*.  Below
41 // is a list of all multiplicative operators and their "flipped" pair.
42 
43 // As a result of the "flip", if the FIRST operator is disabled, it may disable
44 // some uses of the GxB_*_SECOND_* semirings, and visa versa, depending on the
45 // matrix formats.  I recommend that if you want to use the FIRST operator with
46 // fast hard-coded semirings, then do not disable FIRST or SECOND.  The
47 // following is a complete list of all pairs of operators that may be replaced
48 // with the other.  I recommend either keeping both of each pair, or disabling
49 // both.
50 
51         // FIRST and SECOND
52         // LT and GT
53         // LE and GE
54         // ISLT and ISGT
55         // ISLE and ISGE
56         // DIV and RDIV
57         // MINUS and RMINUS
58 
59 // In addition, many of the Boolean operators are not unique, and are renamed
60 // internally.  The operators listed here are just the unique ones.  In
61 // particular, GrB_DIV_BOOL is identical to GrB_FIRST_BOOL, so the GrB_DIV_BOOL
62 // operator is replaced internally with GrB_FIRST_BOOL.
63 
64         // FIRST and DIV                        : FIRST is used for both
65         // SECOND and RDIV                      : SECOND
66         // MIN, TIMES, and LAND                 : LAND
67         // MAX, PLUS, and LOR                   : LOR
68         // ISNE, NE, MINUS, RMINUS, and LXOR    : LXOR
69         // ISEQ, EQ                             : EQ
70         // ISGT, GT                             : GT
71         // ISLT, LT                             : LT
72         // ISGE, GE                             : GE
73         // ISLE, LE                             : LE
74 
75 // Thus, below there is a #define GxB_NO_LAND_FIRST_BOOL, but no #define
76 // GxB_NO_LAND_DIV_BOOL.
77 
78 // Note that there are no macros that disable the hard-coded functions for
79 // GxB_select (Generated/GB_sel__*), since they have no generic equivalents.
80 
81 // In SuiteSparse:GraphBLAS v4.0.1, some of the fast hard-coded semirings have
82 // been disabled below.  They still work, but are now slower since the work is
83 // now done by the generic semiring instead.  These semirings are likely not
84 // needed by any application, and disabling them here saves compile time and
85 // reduces the size of the compiled library.  Hard-coded semirings removed:
86 
87 //  (1) *_IS* semirings are removed.
88 //  (2) semirings with DIV, RDIV, MINUS, RMINUS and ANY multiplicative
89 //      operators are removed.  ANY still appears as a monoid for many fast
90 //      hard-coded semirings, just not as a multiplicative operator.
91 //  (3) MIN, MAX, and TIMES monoids with the PAIR, LAND, LOR and LXOR
92 //      multiplicative operators are removed.
93 //  (4) PLUS monoids with LAND, LOR, and LXOR multiplicative ops.
94 //  (5) MAX_MAX, MIN_MIN, semirings are removed.
95 //  (5) ANY monoids with the EQ, NE, GE, LE, GT, LT, LAND, LOR, LXOR, MAX, MIN,
96 //      PLUS and TIMES operators.
97 //  (6) boolean semirings with non-boolean inputs removed
98 //      (EQ_LT_FP32 for example), and boolean inputs with comparators
99 //      (GE, GT, LE, LT)
100 //  (7) positional semirings with PLUS and TIMES monoid removed.
101 //  (8) some complex semirings removed.
102 
103 // With the above semirings removed, the remaining 398 semirings are:
104 
105 //  25 boolean semirings
106 //
107 //      monoid  multiply ops
108 //      EQ:     EQ (=LXNOR), LAND, LOR, LXOR (=NE), FIRST, SECOND
109 //      LAND:   EQ (=LXNOR), LAND, LOR, LXOR (=NE), FIRST, SECOND
110 //      LOR:    EQ (=LXNOR), LAND, LOR, LXOR (=NE), FIRST, SECOND
111 //      LXOR:   EQ (=LXNOR), LAND, LOR, LXOR (=NE), FIRST, SECOND, PAIR.
112 //
113 //              note: EQ_BOOL and LXNOR are the same operator, and
114 //                    NE_BOOL and LXOR  are the same operator.
115 //
116 //  100 semirings with MIN/MAX monoids (10 kinds, 10 real types each):
117 //
118 //      monoid  multiply ops
119 //      MAX:    MIN, PLUS, TIMES, FIRST, SECOND
120 //      MIN:    MAX, PLUS, TIMES, FIRST, SECOND
121 //
122 //  70 semirings with PLUS monoids (10 real types each):
123 //  60 semirings with TIMES monoids (10 real types each):
124 //
125 //      monoid  multiply ops
126 //      PLUS:   MIN, MAX, PLUS, TIMES, FIRST, SECOND, PAIR
127 //      TIMES:  MIN, MAX, PLUS, TIMES, FIRST, SECOND
128 //
129 //  10 semirings for 2 complex types (PLUS and TIMES monoids only):
130 //
131 //      monoid  multiply ops
132 //      PLUS:  TIMES, FIRST, SECOND
133 //      TIMES: FIRST, SECOND
134 //
135 //  33 semirings enabled with the ANY monoid:
136 //
137 //      ANY:   FIRST, SECOND, PAIR (with bool, 10 real types)
138 //
139 //  64 bitwise semirings: for 4 unsigned integer types:
140 //
141 //      (BOR, BAND, BXOR, BXNOR) x (BOR, BAND, BXOR, BXNOR)
142 //
143 //  36 positional semirings:
144 //
145 //      monoids: (MIN, MAX, ANY) x
146 //      mult:    (FIRSTI, FIRSTI1, FIRSTJ, FIRSTJ1, SECONDJ, SECONDJ1) x
147 //      types:   (int32, int64)
148 //
149 //  note:
150 //      EQ_PAIR_BOOL, XNOR_PAIR_BOOL, LAND_PAIR_BOOL, LOR_PAIR_BOOL, are all
151 //      the same as ANY_PAIR_BOOL.  For the other types, MAX_PAIR, MIN_PAIR,
152 //      and TIMES_PAIR are the same as ANY_PAIR.  These are excluded from the
153 //      list above, but are just as fast as ANY_PAIR.
154 
155 // These changes have no effect on the performance of binary operations such
156 // as eWiseAdd, eWiseMult, or the unary GrB_apply to GrB_reduce.  They only
157 // affect GrB_mxm, GrB_mxv, and GrB_vxm.
158 
159 // To renable the fast versions of these semirings, simply comment out the
160 // specific "#define GxB_NO..." statements below, and recompile this library.
161 
162 //------------------------------------------------------------------------------
163 // uncomment any of these lines to disable the types
164 //------------------------------------------------------------------------------
165 
166 // These disable all semirings with the corresponding type of x,y for the
167 // multiplicative operator, for GrB_mxm, GrB_vxm, and GrB_mxv.
168 
169 // They also disable the hard-coded functions for GrB_eWiseAdd, GrB_eWiseMult,
170 // GrB_reduce, GrB_*_build, GrB_apply, and GrB_transpose for this type.
171 
172 // If disabled, the types still work just fine, but operations on them will be
173 // slower.
174 
175 // #define GxB_NO_BOOL      1
176 // #define GxB_NO_FP32      1
177 // #define GxB_NO_FP64      1
178 // #define GxB_NO_FC32      1
179 // #define GxB_NO_FC64      1
180 // #define GxB_NO_INT16     1
181 // #define GxB_NO_INT32     1
182 // #define GxB_NO_INT64     1
183 // #define GxB_NO_INT8      1
184 // #define GxB_NO_UINT16    1
185 // #define GxB_NO_UINT32    1
186 // #define GxB_NO_UINT64    1
187 // #define GxB_NO_UINT8     1
188 
189 //------------------------------------------------------------------------------
190 // uncomment any of these lines to disable the unary operators
191 //------------------------------------------------------------------------------
192 
193 // These disable all unary operators for GrB_apply.  These options have no
194 // effect on GrB_mxm, GrB_vxm, GrB_mxv, GrB_eWiseAdd, GrB_eWiseMult,
195 // GrB_reduce, or GrB_*_build.
196 
197 // Any disabled unary operators will still work just fine, but operations using
198 // them will be slower.
199 
200 // #define GxB_NO_ABS       1
201 // #define GxB_NO_AINV      1
202 // #define GxB_NO_IDENTITY  1
203 // #define GxB_NO_LNOT      1
204 // #define GxB_NO_MINV      1
205 // #define GxB_NO_ONE       1
206 // #define GxB_NO_BNOT      1
207 
208 // #define GxB_NO_SQRT      1
209 // #define GxB_NO_LOG       1
210 // #define GxB_NO_EXP       1
211 
212 // #define GxB_NO_SIN       1
213 // #define GxB_NO_COS       1
214 // #define GxB_NO_TAN       1
215 
216 // #define GxB_NO_ASIN      1
217 // #define GxB_NO_ACOS      1
218 // #define GxB_NO_ATAN      1
219 
220 // #define GxB_NO_SINH      1
221 // #define GxB_NO_COSH      1
222 // #define GxB_NO_TANH      1
223 
224 // #define GxB_NO_ASINH     1
225 // #define GxB_NO_ACOSH     1
226 // #define GxB_NO_ATANH     1
227 
228 // #define GxB_NO_SIGNUM    1
229 // #define GxB_NO_CEIL      1
230 // #define GxB_NO_FLOOR     1
231 // #define GxB_NO_ROUND     1
232 // #define GxB_NO_TRUNC     1
233 
234 // #define GxB_NO_EXP2      1
235 // #define GxB_NO_EXPM1     1
236 // #define GxB_NO_LOG10     1
237 // #define GxB_NO_LOG1P     1
238 // #define GxB_NO_LOG2      1
239 
240 // #define GxB_NO_LGAMMA    1
241 // #define GxB_NO_TGAMMA    1
242 // #define GxB_NO_ERF       1
243 // #define GxB_NO_ERFC      1
244 
245 // #define GxB_NO_FREXPX    1
246 // #define GxB_NO_FREXPE    1
247 
248 // #define GxB_NO_CONJ      1
249 // #define GxB_NO_CREAL     1
250 // #define GxB_NO_CIMAG     1
251 // #define GxB_NO_CARG      1
252 
253 // #define GxB_NO_ISINF     1
254 // #define GxB_NO_ISNAN     1
255 // #define GxB_NO_ISFINITE  1
256 
257 //------------------------------------------------------------------------------
258 // uncomment any of these lines to disable the binary operators for all types
259 //------------------------------------------------------------------------------
260 
261 // These disable all semirings with the corresponding additive or
262 // multiplicative operator, for GrB_mxm, GrB_vxm, and GrB_mxv.
263 
264 // They also disable the hard-coded functions for GrB_eWiseAdd, GrB_eWiseMult,
265 // GrB_reduce, and GrB_*_build for this binary operator.
266 
267 // Any disabled binary operators will still work just fine, but operations
268 // using them will be slower.
269 
270 // #define GxB_NO_FIRST     1
271 // #define GxB_NO_SECOND    1
272 // #define GxB_NO_PAIR      1
273 // #define GxB_NO_ANY       1
274 // #define GxB_NO_MIN       1
275 // #define GxB_NO_MAX       1
276 // #define GxB_NO_PLUS      1
277 // #define GxB_NO_MINUS     1
278 // #define GxB_NO_RMINUS    1
279 // #define GxB_NO_TIMES     1
280 // #define GxB_NO_DIV       1
281 // #define GxB_NO_RDIV      1
282 // #define GxB_NO_ISEQ      1
283 // #define GxB_NO_ISNE      1
284 // #define GxB_NO_ISGT      1
285 // #define GxB_NO_ISGE      1
286 // #define GxB_NO_ISLT      1
287 // #define GxB_NO_ISLE      1
288 // #define GxB_NO_EQ        1
289 // #define GxB_NO_NE        1
290 // #define GxB_NO_GT        1
291 // #define GxB_NO_LT        1
292 // #define GxB_NO_LE        1
293 // #define GxB_NO_GE        1
294 // #define GxB_NO_LAND      1
295 // #define GxB_NO_LOR       1
296 // #define GxB_NO_LXOR      1
297 
298 // #define GxB_NO_BOR       1
299 // #define GxB_NO_BAND      1
300 // #define GxB_NO_BXOR      1
301 // #define GxB_NO_BXNOR     1
302 // #define GxB_NO_BGET      1
303 // #define GxB_NO_BSET      1
304 // #define GxB_NO_BCLR      1
305 // #define GxB_NO_BSHIFT    1
306 
307 // #define GxB_NO_ATAN2     1
308 // #define GxB_NO_HYPOT     1
309 // #define GxB_NO_FMOD      1
310 // #define GxB_NO_REMAINDER 1
311 // #define GxB_NO_COPYSIGN  1
312 // #define GxB_NO_LDEXP     1
313 
314 // #define GxB_NO_CMPLX     1
315 // #define GxB_NO_POW       1
316 
317 // #define GxB_NO_FIRSTI    1
318 // #define GxB_NO_FIRSTI1   1
319 // #define GxB_NO_FIRSTJ    1
320 // #define GxB_NO_FIRSTJ1   1
321 // #define GxB_NO_SECONDI   1
322 // #define GxB_NO_SECONDI1  1
323 // #define GxB_NO_SECONDJ   1
324 // #define GxB_NO_SECONDJ1  1
325 
326 //------------------------------------------------------------------------------
327 // uncomment any of these lines to disable the binary operators for each type
328 //------------------------------------------------------------------------------
329 
330 // These disable all semirings with the corresponding additive or
331 // multiplicative operator with the particular type, for GrB_mxm, GrB_vxm, and
332 // GrB_mxv.
333 
334 // They also disable the hard-coded functions for GrB_eWiseAdd, GrB_eWiseMult,
335 // GrB_reduce, and GrB_*_build for this binary operator, for the particular
336 // type.
337 
338 // These options are more precise than the ones above.  For example,
339 // GxB_NO_TIMES, above, disables the GrB_TIMES_<type> operator for all types
340 // (except bool, which is renamed as GrB_LAND).  GxB_NO_INT16, above, disables
341 // all operators of the form GrB_<op>_INT16.  But GxB_NO_TIMES_INT16, listed
342 // below, disables just the single GrB_TIMES_INT16 operator, and all semirings
343 // that use it.  It has no effect on GrB_TIMES_FP64, for example, or any other
344 // operator.
345 
346 // Note that some boolean operators do not appear.  GrB_MIN_BOOL and
347 // GrB_TIMES_BOOL are renamed internally to GrB_LAND_BOOL, for example, so
348 // uncommenting GxB_NO_LAND_BOOL disables all three operators.
349 
350 // Any disabled binary operators will still work just fine, but operations
351 // using them will be slower.
352 
353 // also needed by GrB_reduce to vector
354 // #define GxB_NO_FIRST_INT8    1
355 // #define GxB_NO_FIRST_INT16   1
356 // #define GxB_NO_FIRST_INT32   1
357 // #define GxB_NO_FIRST_INT64   1
358 // #define GxB_NO_FIRST_UINT8   1
359 // #define GxB_NO_FIRST_UINT16  1
360 // #define GxB_NO_FIRST_UINT32  1
361 // #define GxB_NO_FIRST_UINT64  1
362 // #define GxB_NO_FIRST_FP32    1
363 // #define GxB_NO_FIRST_FP64    1
364 // #define GxB_NO_FIRST_FC32    1
365 // #define GxB_NO_FIRST_FC64    1
366 // #define GxB_NO_FIRST_BOOL    1
367 
368 // also needed by GrB_reduce to vector
369 // #define GxB_NO_SECOND_INT8   1
370 // #define GxB_NO_SECOND_INT16  1
371 // #define GxB_NO_SECOND_INT32  1
372 // #define GxB_NO_SECOND_INT64  1
373 // #define GxB_NO_SECOND_UINT8  1
374 // #define GxB_NO_SECOND_UINT16 1
375 // #define GxB_NO_SECOND_UINT32 1
376 // #define GxB_NO_SECOND_UINT64 1
377 // #define GxB_NO_SECOND_FP32   1
378 // #define GxB_NO_SECOND_FP64   1
379 // #define GxB_NO_SECOND_FC32   1
380 // #define GxB_NO_SECOND_FC64   1
381 // #define GxB_NO_SECOND_BOOL   1
382 
383 // #define GxB_NO_PAIR_INT8     1
384 // #define GxB_NO_PAIR_INT16    1
385 // #define GxB_NO_PAIR_INT32    1
386 // #define GxB_NO_PAIR_INT64    1
387 // #define GxB_NO_PAIR_UINT8    1
388 // #define GxB_NO_PAIR_UINT16   1
389 // #define GxB_NO_PAIR_UINT32   1
390 // #define GxB_NO_PAIR_UINT64   1
391 // #define GxB_NO_PAIR_FP32     1
392 // #define GxB_NO_PAIR_FP64     1
393 // #define GxB_NO_PAIR_FC32     1
394 // #define GxB_NO_PAIR_FC64     1
395 // #define GxB_NO_PAIR_BOOL     1
396 
397 // #define GxB_NO_ANY_INT8      1
398 // #define GxB_NO_ANY_INT16     1
399 // #define GxB_NO_ANY_INT32     1
400 // #define GxB_NO_ANY_INT64     1
401 // #define GxB_NO_ANY_UINT8     1
402 // #define GxB_NO_ANY_UINT16    1
403 // #define GxB_NO_ANY_UINT32    1
404 // #define GxB_NO_ANY_UINT64    1
405 // #define GxB_NO_ANY_FP32      1
406 // #define GxB_NO_ANY_FP64      1
407 // #define GxB_NO_ANY_FC32      1
408 // #define GxB_NO_ANY_FC64      1
409 // #define GxB_NO_ANY_BOOL      1
410 
411 // #define GxB_NO_MIN_INT8      1
412 // #define GxB_NO_MIN_INT16     1
413 // #define GxB_NO_MIN_INT32     1
414 // #define GxB_NO_MIN_INT64     1
415 // #define GxB_NO_MIN_UINT8     1
416 // #define GxB_NO_MIN_UINT16    1
417 // #define GxB_NO_MIN_UINT32    1
418 // #define GxB_NO_MIN_UINT64    1
419 // #define GxB_NO_MIN_FP32      1
420 // #define GxB_NO_MIN_FP64      1
421 
422 // #define GxB_NO_MAX_INT8      1
423 // #define GxB_NO_MAX_INT16     1
424 // #define GxB_NO_MAX_INT32     1
425 // #define GxB_NO_MAX_INT64     1
426 // #define GxB_NO_MAX_UINT8     1
427 // #define GxB_NO_MAX_UINT16    1
428 // #define GxB_NO_MAX_UINT32    1
429 // #define GxB_NO_MAX_UINT64    1
430 // #define GxB_NO_MAX_FP32      1
431 // #define GxB_NO_MAX_FP64      1
432 
433 // #define GxB_NO_PLUS_INT8     1
434 // #define GxB_NO_PLUS_INT16    1
435 // #define GxB_NO_PLUS_INT32    1
436 // #define GxB_NO_PLUS_INT64    1
437 // #define GxB_NO_PLUS_UINT8    1
438 // #define GxB_NO_PLUS_UINT16   1
439 // #define GxB_NO_PLUS_UINT32   1
440 // #define GxB_NO_PLUS_UINT64   1
441 // #define GxB_NO_PLUS_FP32     1
442 // #define GxB_NO_PLUS_FP64     1
443 // #define GxB_NO_PLUS_FC32     1
444 // #define GxB_NO_PLUS_FC64     1
445 
446 // #define GxB_NO_MINUS_INT8    1
447 // #define GxB_NO_MINUS_INT16   1
448 // #define GxB_NO_MINUS_INT32   1
449 // #define GxB_NO_MINUS_INT64   1
450 // #define GxB_NO_MINUS_UINT8   1
451 // #define GxB_NO_MINUS_UINT16  1
452 // #define GxB_NO_MINUS_UINT32  1
453 // #define GxB_NO_MINUS_UINT64  1
454 // #define GxB_NO_MINUS_FP32    1
455 // #define GxB_NO_MINUS_FP64    1
456 // #define GxB_NO_MINUS_FC32    1
457 // #define GxB_NO_MINUS_FC64    1
458 
459 // #define GxB_NO_RMINUS_INT8   1
460 // #define GxB_NO_RMINUS_INT16  1
461 // #define GxB_NO_RMINUS_INT32  1
462 // #define GxB_NO_RMINUS_INT64  1
463 // #define GxB_NO_RMINUS_UINT8  1
464 // #define GxB_NO_RMINUS_UINT16 1
465 // #define GxB_NO_RMINUS_UINT32 1
466 // #define GxB_NO_RMINUS_UINT64 1
467 // #define GxB_NO_RMINUS_FP32   1
468 // #define GxB_NO_RMINUS_FP64   1
469 // #define GxB_NO_RMINUS_FC32   1
470 // #define GxB_NO_RMINUS_FC64   1
471 
472 // #define GxB_NO_TIMES_INT8    1
473 // #define GxB_NO_TIMES_INT16   1
474 // #define GxB_NO_TIMES_INT32   1
475 // #define GxB_NO_TIMES_INT64   1
476 // #define GxB_NO_TIMES_UINT8   1
477 // #define GxB_NO_TIMES_UINT16  1
478 // #define GxB_NO_TIMES_UINT32  1
479 // #define GxB_NO_TIMES_UINT64  1
480 // #define GxB_NO_TIMES_FP32    1
481 // #define GxB_NO_TIMES_FP64    1
482 // #define GxB_NO_TIMES_FC32    1
483 // #define GxB_NO_TIMES_FC64    1
484 
485 // #define GxB_NO_DIV_INT8      1
486 // #define GxB_NO_DIV_INT16     1
487 // #define GxB_NO_DIV_INT32     1
488 // #define GxB_NO_DIV_INT64     1
489 // #define GxB_NO_DIV_UINT8     1
490 // #define GxB_NO_DIV_UINT16    1
491 // #define GxB_NO_DIV_UINT32    1
492 // #define GxB_NO_DIV_UINT64    1
493 // #define GxB_NO_DIV_FP32      1
494 // #define GxB_NO_DIV_FP64      1
495 // #define GxB_NO_DIV_FC32      1
496 // #define GxB_NO_DIV_FC64      1
497 
498 // #define GxB_NO_RDIV_INT8     1
499 // #define GxB_NO_RDIV_INT16    1
500 // #define GxB_NO_RDIV_INT32    1
501 // #define GxB_NO_RDIV_INT64    1
502 // #define GxB_NO_RDIV_UINT8    1
503 // #define GxB_NO_RDIV_UINT16   1
504 // #define GxB_NO_RDIV_UINT32   1
505 // #define GxB_NO_RDIV_UINT64   1
506 // #define GxB_NO_RDIV_FP32     1
507 // #define GxB_NO_RDIV_FP64     1
508 // #define GxB_NO_RDIV_FC32     1
509 // #define GxB_NO_RDIV_FC64     1
510 
511 // #define GxB_NO_ISEQ_INT8     1
512 // #define GxB_NO_ISEQ_INT16    1
513 // #define GxB_NO_ISEQ_INT32    1
514 // #define GxB_NO_ISEQ_INT64    1
515 // #define GxB_NO_ISEQ_UINT8    1
516 // #define GxB_NO_ISEQ_UINT16   1
517 // #define GxB_NO_ISEQ_UINT32   1
518 // #define GxB_NO_ISEQ_UINT64   1
519 // #define GxB_NO_ISEQ_FP32     1
520 // #define GxB_NO_ISEQ_FP64     1
521 // #define GxB_NO_ISEQ_FC32     1
522 // #define GxB_NO_ISEQ_FC64     1
523 
524 // #define GxB_NO_ISNE_INT8     1
525 // #define GxB_NO_ISNE_INT16    1
526 // #define GxB_NO_ISNE_INT32    1
527 // #define GxB_NO_ISNE_INT64    1
528 // #define GxB_NO_ISNE_UINT8    1
529 // #define GxB_NO_ISNE_UINT16   1
530 // #define GxB_NO_ISNE_UINT32   1
531 // #define GxB_NO_ISNE_UINT64   1
532 // #define GxB_NO_ISNE_FP32     1
533 // #define GxB_NO_ISNE_FP64     1
534 // #define GxB_NO_ISNE_FC32     1
535 // #define GxB_NO_ISNE_FC64     1
536 
537 // #define GxB_NO_ISGT_INT8     1
538 // #define GxB_NO_ISGT_INT16    1
539 // #define GxB_NO_ISGT_INT32    1
540 // #define GxB_NO_ISGT_INT64    1
541 // #define GxB_NO_ISGT_UINT8    1
542 // #define GxB_NO_ISGT_UINT16   1
543 // #define GxB_NO_ISGT_UINT32   1
544 // #define GxB_NO_ISGT_UINT64   1
545 // #define GxB_NO_ISGT_FP32     1
546 // #define GxB_NO_ISGT_FP64     1
547 
548 // #define GxB_NO_ISLT_INT8     1
549 // #define GxB_NO_ISLT_INT16    1
550 // #define GxB_NO_ISLT_INT32    1
551 // #define GxB_NO_ISLT_INT64    1
552 // #define GxB_NO_ISLT_UINT8    1
553 // #define GxB_NO_ISLT_UINT16   1
554 // #define GxB_NO_ISLT_UINT32   1
555 // #define GxB_NO_ISLT_UINT64   1
556 // #define GxB_NO_ISLT_FP32     1
557 // #define GxB_NO_ISLT_FP64     1
558 
559 // #define GxB_NO_ISGE_INT8     1
560 // #define GxB_NO_ISGE_INT16    1
561 // #define GxB_NO_ISGE_INT32    1
562 // #define GxB_NO_ISGE_INT64    1
563 // #define GxB_NO_ISGE_UINT8    1
564 // #define GxB_NO_ISGE_UINT16   1
565 // #define GxB_NO_ISGE_UINT32   1
566 // #define GxB_NO_ISGE_UINT64   1
567 // #define GxB_NO_ISGE_FP32     1
568 // #define GxB_NO_ISGE_FP64     1
569 
570 // #define GxB_NO_ISLE_INT8     1
571 // #define GxB_NO_ISLE_INT16    1
572 // #define GxB_NO_ISLE_INT32    1
573 // #define GxB_NO_ISLE_INT64    1
574 // #define GxB_NO_ISLE_UINT8    1
575 // #define GxB_NO_ISLE_UINT16   1
576 // #define GxB_NO_ISLE_UINT32   1
577 // #define GxB_NO_ISLE_UINT64   1
578 // #define GxB_NO_ISLE_FP32     1
579 // #define GxB_NO_ISLE_FP64     1
580 
581 // #define GxB_NO_EQ_INT8       1
582 // #define GxB_NO_EQ_INT16      1
583 // #define GxB_NO_EQ_INT32      1
584 // #define GxB_NO_EQ_INT64      1
585 // #define GxB_NO_EQ_UINT8      1
586 // #define GxB_NO_EQ_UINT16     1
587 // #define GxB_NO_EQ_UINT32     1
588 // #define GxB_NO_EQ_UINT64     1
589 // #define GxB_NO_EQ_FP32       1
590 // #define GxB_NO_EQ_FP64       1
591 // #define GxB_NO_EQ_BOOL       1
592 // #define GxB_NO_EQ_FC32       1
593 // #define GxB_NO_EQ_FC64       1
594 
595 // #define GxB_NO_NE_INT8       1
596 // #define GxB_NO_NE_INT16      1
597 // #define GxB_NO_NE_INT32      1
598 // #define GxB_NO_NE_INT64      1
599 // #define GxB_NO_NE_UINT8      1
600 // #define GxB_NO_NE_UINT16     1
601 // #define GxB_NO_NE_UINT32     1
602 // #define GxB_NO_NE_UINT64     1
603 // #define GxB_NO_NE_FP32       1
604 // #define GxB_NO_NE_FP64       1
605 // #define GxB_NO_NE_FC32       1
606 // #define GxB_NO_NE_FC64       1
607 
608 // #define GxB_NO_GT_INT8       1
609 // #define GxB_NO_GT_INT16      1
610 // #define GxB_NO_GT_INT32      1
611 // #define GxB_NO_GT_INT64      1
612 // #define GxB_NO_GT_UINT8      1
613 // #define GxB_NO_GT_UINT16     1
614 // #define GxB_NO_GT_UINT32     1
615 // #define GxB_NO_GT_UINT64     1
616 // #define GxB_NO_GT_FP32       1
617 // #define GxB_NO_GT_FP64       1
618 // #define GxB_NO_GT_BOOL       1
619 
620 // #define GxB_NO_LT_INT8       1
621 // #define GxB_NO_LT_INT16      1
622 // #define GxB_NO_LT_INT32      1
623 // #define GxB_NO_LT_INT64      1
624 // #define GxB_NO_LT_UINT8      1
625 // #define GxB_NO_LT_UINT16     1
626 // #define GxB_NO_LT_UINT32     1
627 // #define GxB_NO_LT_UINT64     1
628 // #define GxB_NO_LT_FP32       1
629 // #define GxB_NO_LT_FP64       1
630 // #define GxB_NO_LT_BOOL       1
631 
632 // #define GxB_NO_GE_INT8       1
633 // #define GxB_NO_GE_INT16      1
634 // #define GxB_NO_GE_INT32      1
635 // #define GxB_NO_GE_INT64      1
636 // #define GxB_NO_GE_UINT8      1
637 // #define GxB_NO_GE_UINT16     1
638 // #define GxB_NO_GE_UINT32     1
639 // #define GxB_NO_GE_UINT64     1
640 // #define GxB_NO_GE_FP32       1
641 // #define GxB_NO_GE_FP64       1
642 // #define GxB_NO_GE_BOOL       1
643 
644 // #define GxB_NO_LE_INT8       1
645 // #define GxB_NO_LE_INT16      1
646 // #define GxB_NO_LE_INT32      1
647 // #define GxB_NO_LE_INT64      1
648 // #define GxB_NO_LE_UINT8      1
649 // #define GxB_NO_LE_UINT16     1
650 // #define GxB_NO_LE_UINT32     1
651 // #define GxB_NO_LE_UINT64     1
652 // #define GxB_NO_LE_FP32       1
653 // #define GxB_NO_LE_FP64       1
654 // #define GxB_NO_LE_BOOL
655 
656 // #define GxB_NO_LOR_INT8      1
657 // #define GxB_NO_LOR_INT16     1
658 // #define GxB_NO_LOR_INT32     1
659 // #define GxB_NO_LOR_INT64     1
660 // #define GxB_NO_LOR_UINT8     1
661 // #define GxB_NO_LOR_UINT16    1
662 // #define GxB_NO_LOR_UINT32    1
663 // #define GxB_NO_LOR_UINT64    1
664 // #define GxB_NO_LOR_FP32      1
665 // #define GxB_NO_LOR_FP64      1
666 // #define GxB_NO_LOR_BOOL      1
667 
668 // #define GxB_NO_LAND_INT8     1
669 // #define GxB_NO_LAND_INT16    1
670 // #define GxB_NO_LAND_INT32    1
671 // #define GxB_NO_LAND_INT64    1
672 // #define GxB_NO_LAND_UINT8    1
673 // #define GxB_NO_LAND_UINT16   1
674 // #define GxB_NO_LAND_UINT32   1
675 // #define GxB_NO_LAND_UINT64   1
676 // #define GxB_NO_LAND_FP32     1
677 // #define GxB_NO_LAND_FP64     1
678 // #define GxB_NO_LAND_BOOL     1
679 
680 // #define GxB_NO_LXOR_INT8     1
681 // #define GxB_NO_LXOR_INT16    1
682 // #define GxB_NO_LXOR_INT32    1
683 // #define GxB_NO_LXOR_INT64    1
684 // #define GxB_NO_LXOR_UINT8    1
685 // #define GxB_NO_LXOR_UINT16   1
686 // #define GxB_NO_LXOR_UINT32   1
687 // #define GxB_NO_LXOR_UINT64   1
688 // #define GxB_NO_LXOR_FP32     1
689 // #define GxB_NO_LXOR_FP64     1
690 // #define GxB_NO_LXOR_BOOL     1
691 
692 // #define GxB_NO_ATAN2_FP32    1
693 // #define GxB_NO_ATAN2_FP64    1
694 
695 // #define GxB_NO_HYPOT_FP32    1
696 // #define GxB_NO_HYPOT_FP64    1
697 
698 // #define GxB_NO_FMOD_FP32     1
699 // #define GxB_NO_FMOD_FP64     1
700 
701 // #define GxB_NO_REMAINDER_FP32 1
702 // #define GxB_NO_REMAINDER_FP64 1
703 
704 // #define GxB_NO_COPYSIGN_FP32 1
705 // #define GxB_NO_COPYSIGN_FP64 1
706 
707 // #define GxB_NO_LDEXP_FP32    1
708 // #define GxB_NO_LDEXP_FP64    1
709 
710 // #define GxB_NO_CMPLX_FP32    1
711 // #define GxB_NO_CMPLX_FP64    1
712 
713 // #define GxB_NO_POW_INT8      1
714 // #define GxB_NO_POW_INT16     1
715 // #define GxB_NO_POW_INT32     1
716 // #define GxB_NO_POW_INT64     1
717 // #define GxB_NO_POW_UINT8     1
718 // #define GxB_NO_POW_UINT16    1
719 // #define GxB_NO_POW_UINT32    1
720 // #define GxB_NO_POW_UINT64    1
721 // #define GxB_NO_POW_FP32      1
722 // #define GxB_NO_POW_FP64      1
723 // #define GxB_NO_POW_FC32      1
724 // #define GxB_NO_POW_FC64      1
725 // #define GxB_NO_POW_BOOL      1
726 
727 // #define GxB_NO_BOR_INT8      1
728 // #define GxB_NO_BOR_INT16     1
729 // #define GxB_NO_BOR_INT32     1
730 // #define GxB_NO_BOR_INT64     1
731 // #define GxB_NO_BOR_UINT8     1
732 // #define GxB_NO_BOR_UINT16    1
733 // #define GxB_NO_BOR_UINT32    1
734 // #define GxB_NO_BOR_UINT64    1
735 
736 // #define GxB_NO_BAND_INT8      1
737 // #define GxB_NO_BAND_INT16     1
738 // #define GxB_NO_BAND_INT32     1
739 // #define GxB_NO_BAND_INT64     1
740 // #define GxB_NO_BAND_UINT8     1
741 // #define GxB_NO_BAND_UINT16    1
742 // #define GxB_NO_BAND_UINT32    1
743 // #define GxB_NO_BAND_UINT64    1
744 
745 // #define GxB_NO_BXOR_INT8      1
746 // #define GxB_NO_BXOR_INT16     1
747 // #define GxB_NO_BXOR_INT32     1
748 // #define GxB_NO_BXOR_INT64     1
749 // #define GxB_NO_BXOR_UINT8     1
750 // #define GxB_NO_BXOR_UINT16    1
751 // #define GxB_NO_BXOR_UINT32    1
752 // #define GxB_NO_BXOR_UINT64    1
753 
754 // #define GxB_NO_BXNOR_INT8      1
755 // #define GxB_NO_BXNOR_INT16     1
756 // #define GxB_NO_BXNOR_INT32     1
757 // #define GxB_NO_BXNOR_INT64     1
758 // #define GxB_NO_BXNOR_UINT8     1
759 // #define GxB_NO_BXNOR_UINT16    1
760 // #define GxB_NO_BXNOR_UINT32    1
761 // #define GxB_NO_BXNOR_UINT64    1
762 
763 // #define GxB_NO_BGET_INT8      1
764 // #define GxB_NO_BGET_INT16     1
765 // #define GxB_NO_BGET_INT32     1
766 // #define GxB_NO_BGET_INT64     1
767 // #define GxB_NO_BGET_UINT8     1
768 // #define GxB_NO_BGET_UINT16    1
769 // #define GxB_NO_BGET_UINT32    1
770 // #define GxB_NO_BGET_UINT64    1
771 
772 // #define GxB_NO_BSET_INT8      1
773 // #define GxB_NO_BSET_INT16     1
774 // #define GxB_NO_BSET_INT32     1
775 // #define GxB_NO_BSET_INT64     1
776 // #define GxB_NO_BSET_UINT8     1
777 // #define GxB_NO_BSET_UINT16    1
778 // #define GxB_NO_BSET_UINT32    1
779 // #define GxB_NO_BSET_UINT64    1
780 
781 // #define GxB_NO_BCLR_INT8      1
782 // #define GxB_NO_BCLR_INT16     1
783 // #define GxB_NO_BCLR_INT32     1
784 // #define GxB_NO_BCLR_INT64     1
785 // #define GxB_NO_BCLR_UINT8     1
786 // #define GxB_NO_BCLR_UINT16    1
787 // #define GxB_NO_BCLR_UINT32    1
788 // #define GxB_NO_BCLR_UINT64    1
789 
790 // #define GxB_NO_BSHIFT_INT8      1
791 // #define GxB_NO_BSHIFT_INT16     1
792 // #define GxB_NO_BSHIFT_INT32     1
793 // #define GxB_NO_BSHIFT_INT64     1
794 // #define GxB_NO_BSHIFT_UINT8     1
795 // #define GxB_NO_BSHIFT_UINT16    1
796 // #define GxB_NO_BSHIFT_UINT32    1
797 // #define GxB_NO_BSHIFT_UINT64    1
798 
799 // #define GxB_NO_FIRSTI_INT64    1
800 // #define GxB_NO_FIRSTI1_INT64   1
801 // #define GxB_NO_FIRSTJ_INT64    1
802 // #define GxB_NO_FIRSTJ1_INT64   1
803 // #define GxB_NO_SECONDI_INT64   1
804 // #define GxB_NO_SECONDI1_INT64  1
805 // #define GxB_NO_SECONDJ_INT64   1
806 // #define GxB_NO_SECONDJ1_INT64  1
807 
808 // #define GxB_NO_FIRSTI_INT32    1
809 // #define GxB_NO_FIRSTI1_INT32   1
810 // #define GxB_NO_FIRSTJ_INT32    1
811 // #define GxB_NO_FIRSTJ1_INT32   1
812 // #define GxB_NO_SECONDI_INT32   1
813 // #define GxB_NO_SECONDI1_INT32  1
814 // #define GxB_NO_SECONDJ_INT32   1
815 // #define GxB_NO_SECONDJ1_INT32  1
816 
817 //------------------------------------------------------------------------------
818 // uncomment any of these lines to disable the corresponding semiring
819 //------------------------------------------------------------------------------
820 
821 // These options are still more precise.  They disable all semirings with the
822 // corresponding semiring, for GrB_mxm, GrB_vxm, and GrB_mxv.  For example, if
823 // GrB_NO_FP64 is enabled above, then all semirings of the form
824 // GxB_<addop>_<multop>_FP64 are disabled, for any addop or multop operators.
825 // If GrB_NO_PLUS is enabled above, then all semirings of the form
826 // GxB_PLUS_<multop>_<type> and GxB_<multop>_<PLUS>_<type> are disabled.
827 
828 // These options have no effect on GrB_eWiseAdd, GrB_eWiseMult,
829 // GrB_*_build, or GrB_apply.  They do affect GrB_reduce to vector, which
830 // converts the reduction of a vector into a matrix-vector multiplication.
831 
832 // Any disabled semirings will still work just fine, but operations using them
833 // will be slower.
834 
835 //------------------------------------------------------------
836 // semirings with the boolean EQ monoid (also called XNOR)
837 //------------------------------------------------------------
838 
839 // The only builtin GrB_* semiring that uses the EQ (LXNOR) monoid
840 // is LXNOR_LOR_BOOL == EQ_LOR_BOOL.
841 
842 // 6 semirings with the EQ monoid
843 
844 // #define GxB_NO_EQ_EQ_BOOL            1
845 // #define GxB_NO_EQ_LAND_BOOL          1
846 // builtin: GrB_LXNOR_LOR_SEMIRING_BOOL == GxB_EQ_LOR_BOOL:
847 // #define GxB_NO_EQ_LOR_BOOL           1
848 // #define GxB_NO_EQ_LXOR_BOOL          1
849 // FIRST and SECOND are needed by GrB_reduce to vector:
850 // #define GxB_NO_EQ_FIRST_BOOL         1
851 // #define GxB_NO_EQ_SECOND_BOOL        1
852 
853    #define GxB_NO_EQ_EQ_FP32            1
854    #define GxB_NO_EQ_EQ_FP64            1
855    #define GxB_NO_EQ_EQ_INT16           1
856    #define GxB_NO_EQ_EQ_INT32           1
857    #define GxB_NO_EQ_EQ_INT64           1
858    #define GxB_NO_EQ_EQ_INT8            1
859    #define GxB_NO_EQ_EQ_UINT16          1
860    #define GxB_NO_EQ_EQ_UINT32          1
861    #define GxB_NO_EQ_EQ_UINT64          1
862    #define GxB_NO_EQ_EQ_UINT8           1
863    #define GxB_NO_EQ_EQ_FC32            1
864    #define GxB_NO_EQ_EQ_FC64            1
865 
866    #define GxB_NO_EQ_ANY_BOOL           1
867 
868    #define GxB_NO_EQ_GE_BOOL            1
869    #define GxB_NO_EQ_GE_FP32            1
870    #define GxB_NO_EQ_GE_FP64            1
871    #define GxB_NO_EQ_GE_INT16           1
872    #define GxB_NO_EQ_GE_INT32           1
873    #define GxB_NO_EQ_GE_INT64           1
874    #define GxB_NO_EQ_GE_INT8            1
875    #define GxB_NO_EQ_GE_UINT16          1
876    #define GxB_NO_EQ_GE_UINT32          1
877    #define GxB_NO_EQ_GE_UINT64          1
878    #define GxB_NO_EQ_GE_UINT8           1
879 
880    #define GxB_NO_EQ_GT_BOOL            1
881    #define GxB_NO_EQ_GT_FP32            1
882    #define GxB_NO_EQ_GT_FP64            1
883    #define GxB_NO_EQ_GT_INT16           1
884    #define GxB_NO_EQ_GT_INT32           1
885    #define GxB_NO_EQ_GT_INT64           1
886    #define GxB_NO_EQ_GT_INT8            1
887    #define GxB_NO_EQ_GT_UINT16          1
888    #define GxB_NO_EQ_GT_UINT32          1
889    #define GxB_NO_EQ_GT_UINT64          1
890    #define GxB_NO_EQ_GT_UINT8           1
891 
892    #define GxB_NO_EQ_LE_BOOL            1
893    #define GxB_NO_EQ_LE_FP32            1
894    #define GxB_NO_EQ_LE_FP64            1
895    #define GxB_NO_EQ_LE_INT16           1
896    #define GxB_NO_EQ_LE_INT32           1
897    #define GxB_NO_EQ_LE_INT64           1
898    #define GxB_NO_EQ_LE_INT8            1
899    #define GxB_NO_EQ_LE_UINT16          1
900    #define GxB_NO_EQ_LE_UINT32          1
901    #define GxB_NO_EQ_LE_UINT64          1
902    #define GxB_NO_EQ_LE_UINT8           1
903 
904    #define GxB_NO_EQ_LT_BOOL            1
905    #define GxB_NO_EQ_LT_FP32            1
906    #define GxB_NO_EQ_LT_FP64            1
907    #define GxB_NO_EQ_LT_INT16           1
908    #define GxB_NO_EQ_LT_INT32           1
909    #define GxB_NO_EQ_LT_INT64           1
910    #define GxB_NO_EQ_LT_INT8            1
911    #define GxB_NO_EQ_LT_UINT16          1
912    #define GxB_NO_EQ_LT_UINT32          1
913    #define GxB_NO_EQ_LT_UINT64          1
914    #define GxB_NO_EQ_LT_UINT8           1
915 
916    #define GxB_NO_EQ_NE_FP32            1
917    #define GxB_NO_EQ_NE_FP64            1
918    #define GxB_NO_EQ_NE_INT16           1
919    #define GxB_NO_EQ_NE_INT32           1
920    #define GxB_NO_EQ_NE_INT64           1
921    #define GxB_NO_EQ_NE_INT8            1
922    #define GxB_NO_EQ_NE_UINT16          1
923    #define GxB_NO_EQ_NE_UINT32          1
924    #define GxB_NO_EQ_NE_UINT64          1
925    #define GxB_NO_EQ_NE_UINT8           1
926    #define GxB_NO_EQ_NE_FC32            1
927    #define GxB_NO_EQ_NE_FC64            1
928 
929 //------------------------------------------------------------
930 // semirings with the boolean LAND monoid
931 //------------------------------------------------------------
932 
933 // The only builtin GrB_* semiring that uses the LAND monoid is LAND_LOR_BOOL
934 
935 // 6 semirings with the LAND monoid
936 
937 // #define GxB_NO_LAND_EQ_BOOL          1
938 // #define GxB_NO_LAND_LAND_BOOL        1
939 // builtin: GrB_LAND_LOR_SEMIRING_BOOL == GxB_LAND_LOR_BOOL:
940 // #define GxB_NO_LAND_LOR_BOOL         1
941 // #define GxB_NO_LAND_LXOR_BOOL        1
942 // FIRST and SECOND are needed by GrB_reduce to vector:
943 // #define GxB_NO_LAND_FIRST_BOOL       1
944 // #define GxB_NO_LAND_SECOND_BOOL      1
945 
946    #define GxB_NO_LAND_EQ_FP32          1
947    #define GxB_NO_LAND_EQ_FP64          1
948    #define GxB_NO_LAND_EQ_INT16         1
949    #define GxB_NO_LAND_EQ_INT32         1
950    #define GxB_NO_LAND_EQ_INT64         1
951    #define GxB_NO_LAND_EQ_INT8          1
952    #define GxB_NO_LAND_EQ_UINT16        1
953    #define GxB_NO_LAND_EQ_UINT32        1
954    #define GxB_NO_LAND_EQ_UINT64        1
955    #define GxB_NO_LAND_EQ_UINT8         1
956    #define GxB_NO_LAND_EQ_FC32          1
957    #define GxB_NO_LAND_EQ_FC64          1
958 
959    #define GxB_NO_LAND_ANY_BOOL         1
960 
961    #define GxB_NO_LAND_GE_BOOL          1
962    #define GxB_NO_LAND_GE_FP32          1
963    #define GxB_NO_LAND_GE_FP64          1
964    #define GxB_NO_LAND_GE_INT16         1
965    #define GxB_NO_LAND_GE_INT32         1
966    #define GxB_NO_LAND_GE_INT64         1
967    #define GxB_NO_LAND_GE_INT8          1
968    #define GxB_NO_LAND_GE_UINT16        1
969    #define GxB_NO_LAND_GE_UINT32        1
970    #define GxB_NO_LAND_GE_UINT64        1
971    #define GxB_NO_LAND_GE_UINT8         1
972 
973    #define GxB_NO_LAND_GT_BOOL          1
974 
975    #define GxB_NO_LAND_GT_FP32          1
976    #define GxB_NO_LAND_GT_FP64          1
977    #define GxB_NO_LAND_GT_INT16         1
978    #define GxB_NO_LAND_GT_INT32         1
979    #define GxB_NO_LAND_GT_INT64         1
980    #define GxB_NO_LAND_GT_INT8          1
981    #define GxB_NO_LAND_GT_UINT16        1
982    #define GxB_NO_LAND_GT_UINT32        1
983    #define GxB_NO_LAND_GT_UINT64        1
984    #define GxB_NO_LAND_GT_UINT8         1
985 
986    #define GxB_NO_LAND_LE_BOOL          1
987    #define GxB_NO_LAND_LE_FP32          1
988    #define GxB_NO_LAND_LE_FP64          1
989    #define GxB_NO_LAND_LE_INT16         1
990    #define GxB_NO_LAND_LE_INT32         1
991    #define GxB_NO_LAND_LE_INT64         1
992    #define GxB_NO_LAND_LE_INT8          1
993    #define GxB_NO_LAND_LE_UINT16        1
994    #define GxB_NO_LAND_LE_UINT32        1
995    #define GxB_NO_LAND_LE_UINT64        1
996    #define GxB_NO_LAND_LE_UINT8         1
997 
998    #define GxB_NO_LAND_LT_BOOL          1
999    #define GxB_NO_LAND_LT_FP32          1
1000    #define GxB_NO_LAND_LT_FP64          1
1001    #define GxB_NO_LAND_LT_INT16         1
1002    #define GxB_NO_LAND_LT_INT32         1
1003    #define GxB_NO_LAND_LT_INT64         1
1004    #define GxB_NO_LAND_LT_INT8          1
1005    #define GxB_NO_LAND_LT_UINT16        1
1006    #define GxB_NO_LAND_LT_UINT32        1
1007    #define GxB_NO_LAND_LT_UINT64        1
1008    #define GxB_NO_LAND_LT_UINT8         1
1009 
1010    #define GxB_NO_LAND_NE_FP32          1
1011    #define GxB_NO_LAND_NE_FP64          1
1012    #define GxB_NO_LAND_NE_INT16         1
1013    #define GxB_NO_LAND_NE_INT32         1
1014    #define GxB_NO_LAND_NE_INT64         1
1015    #define GxB_NO_LAND_NE_INT8          1
1016    #define GxB_NO_LAND_NE_UINT16        1
1017    #define GxB_NO_LAND_NE_UINT32        1
1018    #define GxB_NO_LAND_NE_UINT64        1
1019    #define GxB_NO_LAND_NE_UINT8         1
1020    #define GxB_NO_LAND_NE_FC32          1
1021    #define GxB_NO_LAND_NE_FC64          1
1022 
1023 //------------------------------------------------------------
1024 // semirings with the boolean LOR monoid
1025 //------------------------------------------------------------
1026 
1027 // The only builtin GrB_* semiring that uses the LOR monoid is LOR_LAND_BOOL
1028 
1029 // 6 semirings with the LOR monoid
1030 
1031 // #define GxB_NO_LOR_EQ_BOOL           1
1032 // builtin GrB_LOR_LAND_SEMIRING_BOOL == GxB_LOR_LAND_BOOL:
1033 // #define GxB_NO_LOR_LAND_BOOL         1
1034 // #define GxB_NO_LOR_LOR_BOOL          1
1035 // #define GxB_NO_LOR_LXOR_BOOL         1
1036 // FIRST and SECOND are needed by GrB_reduce to vector:
1037 // #define GxB_NO_LOR_FIRST_BOOL        1
1038 // #define GxB_NO_LOR_SECOND_BOOL       1
1039 
1040    #define GxB_NO_LOR_EQ_FP32           1
1041    #define GxB_NO_LOR_EQ_FP64           1
1042    #define GxB_NO_LOR_EQ_INT16          1
1043    #define GxB_NO_LOR_EQ_INT32          1
1044    #define GxB_NO_LOR_EQ_INT64          1
1045    #define GxB_NO_LOR_EQ_INT8           1
1046    #define GxB_NO_LOR_EQ_UINT16         1
1047    #define GxB_NO_LOR_EQ_UINT32         1
1048    #define GxB_NO_LOR_EQ_UINT64         1
1049    #define GxB_NO_LOR_EQ_UINT8          1
1050    #define GxB_NO_LOR_EQ_FC32           1
1051    #define GxB_NO_LOR_EQ_FC64           1
1052 
1053    #define GxB_NO_LOR_ANY_BOOL          1
1054 
1055    #define GxB_NO_LOR_GE_BOOL           1
1056    #define GxB_NO_LOR_GE_FP32           1
1057    #define GxB_NO_LOR_GE_FP64           1
1058    #define GxB_NO_LOR_GE_INT16          1
1059    #define GxB_NO_LOR_GE_INT32          1
1060    #define GxB_NO_LOR_GE_INT64          1
1061    #define GxB_NO_LOR_GE_INT8           1
1062    #define GxB_NO_LOR_GE_UINT16         1
1063    #define GxB_NO_LOR_GE_UINT32         1
1064    #define GxB_NO_LOR_GE_UINT64         1
1065    #define GxB_NO_LOR_GE_UINT8          1
1066 
1067    #define GxB_NO_LOR_GT_BOOL           1
1068    #define GxB_NO_LOR_GT_FP32           1
1069    #define GxB_NO_LOR_GT_FP64           1
1070    #define GxB_NO_LOR_GT_INT16          1
1071    #define GxB_NO_LOR_GT_INT32          1
1072    #define GxB_NO_LOR_GT_INT64          1
1073    #define GxB_NO_LOR_GT_INT8           1
1074    #define GxB_NO_LOR_GT_UINT16         1
1075    #define GxB_NO_LOR_GT_UINT32         1
1076    #define GxB_NO_LOR_GT_UINT64         1
1077    #define GxB_NO_LOR_GT_UINT8          1
1078 
1079    #define GxB_NO_LOR_LE_BOOL           1
1080    #define GxB_NO_LOR_LE_FP32           1
1081    #define GxB_NO_LOR_LE_FP64           1
1082    #define GxB_NO_LOR_LE_INT16          1
1083    #define GxB_NO_LOR_LE_INT32          1
1084    #define GxB_NO_LOR_LE_INT64          1
1085    #define GxB_NO_LOR_LE_INT8           1
1086    #define GxB_NO_LOR_LE_UINT16         1
1087    #define GxB_NO_LOR_LE_UINT32         1
1088    #define GxB_NO_LOR_LE_UINT64         1
1089    #define GxB_NO_LOR_LE_UINT8          1
1090 
1091    #define GxB_NO_LOR_LT_BOOL           1
1092    #define GxB_NO_LOR_LT_FP32           1
1093    #define GxB_NO_LOR_LT_FP64           1
1094    #define GxB_NO_LOR_LT_INT16          1
1095    #define GxB_NO_LOR_LT_INT32          1
1096    #define GxB_NO_LOR_LT_INT64          1
1097    #define GxB_NO_LOR_LT_INT8           1
1098    #define GxB_NO_LOR_LT_UINT16         1
1099    #define GxB_NO_LOR_LT_UINT32         1
1100    #define GxB_NO_LOR_LT_UINT64         1
1101    #define GxB_NO_LOR_LT_UINT8          1
1102 
1103    #define GxB_NO_LOR_NE_FP32           1
1104    #define GxB_NO_LOR_NE_FP64           1
1105    #define GxB_NO_LOR_NE_INT16          1
1106    #define GxB_NO_LOR_NE_INT32          1
1107    #define GxB_NO_LOR_NE_INT64          1
1108    #define GxB_NO_LOR_NE_INT8           1
1109    #define GxB_NO_LOR_NE_UINT16         1
1110    #define GxB_NO_LOR_NE_UINT32         1
1111    #define GxB_NO_LOR_NE_UINT64         1
1112    #define GxB_NO_LOR_NE_UINT8          1
1113    #define GxB_NO_LOR_NE_FC32           1
1114    #define GxB_NO_LOR_NE_FC64           1
1115 
1116 //------------------------------------------------------------
1117 // semirings with the boolean LXOR monoid (also called NE)
1118 //------------------------------------------------------------
1119 
1120 // The only builtin GrB_* semiring that uses the LXOR monoid is LXOR_LAND_BOOL
1121 
1122 // 7 semirings with the LXOR monoid (PAIR is unique to this monoid)
1123 
1124 // #define GxB_NO_LXOR_EQ_BOOL          1
1125 // builtin: GrB_LXOR_LAND_SEMIRING_BOOL == GxB_LXOR_LAND_BOOL:
1126 // #define GxB_NO_LXOR_LAND_BOOL        1
1127 // #define GxB_NO_LXOR_LOR_BOOL         1
1128 // #define GxB_NO_LXOR_LXOR_BOOL        1
1129 // FIRST and SECOND are needed by GrB_reduce to vector:
1130 // #define GxB_NO_LXOR_FIRST_BOOL       1
1131 // #define GxB_NO_LXOR_SECOND_BOOL      1
1132 // #define GxB_NO_LXOR_PAIR_BOOL        1
1133 
1134    #define GxB_NO_LXOR_EQ_FP32          1
1135    #define GxB_NO_LXOR_EQ_FP64          1
1136    #define GxB_NO_LXOR_EQ_INT16         1
1137    #define GxB_NO_LXOR_EQ_INT32         1
1138    #define GxB_NO_LXOR_EQ_INT64         1
1139    #define GxB_NO_LXOR_EQ_INT8          1
1140    #define GxB_NO_LXOR_EQ_UINT16        1
1141    #define GxB_NO_LXOR_EQ_UINT32        1
1142    #define GxB_NO_LXOR_EQ_UINT64        1
1143    #define GxB_NO_LXOR_EQ_UINT8         1
1144    #define GxB_NO_LXOR_EQ_FC32          1
1145    #define GxB_NO_LXOR_EQ_FC64          1
1146 
1147    #define GxB_NO_LXOR_ANY_BOOL         1
1148 
1149    #define GxB_NO_LXOR_GE_BOOL          1
1150    #define GxB_NO_LXOR_GE_FP32          1
1151    #define GxB_NO_LXOR_GE_FP64          1
1152    #define GxB_NO_LXOR_GE_INT16         1
1153    #define GxB_NO_LXOR_GE_INT32         1
1154    #define GxB_NO_LXOR_GE_INT64         1
1155    #define GxB_NO_LXOR_GE_INT8          1
1156    #define GxB_NO_LXOR_GE_UINT16        1
1157    #define GxB_NO_LXOR_GE_UINT32        1
1158    #define GxB_NO_LXOR_GE_UINT64        1
1159    #define GxB_NO_LXOR_GE_UINT8         1
1160 
1161    #define GxB_NO_LXOR_GT_BOOL          1
1162    #define GxB_NO_LXOR_GT_FP32          1
1163    #define GxB_NO_LXOR_GT_FP64          1
1164    #define GxB_NO_LXOR_GT_INT16         1
1165    #define GxB_NO_LXOR_GT_INT32         1
1166    #define GxB_NO_LXOR_GT_INT64         1
1167    #define GxB_NO_LXOR_GT_INT8          1
1168    #define GxB_NO_LXOR_GT_UINT16        1
1169    #define GxB_NO_LXOR_GT_UINT32        1
1170    #define GxB_NO_LXOR_GT_UINT64        1
1171    #define GxB_NO_LXOR_GT_UINT8         1
1172 
1173    #define GxB_NO_LXOR_LE_BOOL          1
1174    #define GxB_NO_LXOR_LE_FP32          1
1175    #define GxB_NO_LXOR_LE_FP64          1
1176    #define GxB_NO_LXOR_LE_INT16         1
1177    #define GxB_NO_LXOR_LE_INT32         1
1178    #define GxB_NO_LXOR_LE_INT64         1
1179    #define GxB_NO_LXOR_LE_INT8          1
1180    #define GxB_NO_LXOR_LE_UINT16        1
1181    #define GxB_NO_LXOR_LE_UINT32        1
1182    #define GxB_NO_LXOR_LE_UINT64        1
1183    #define GxB_NO_LXOR_LE_UINT8         1
1184 
1185    #define GxB_NO_LXOR_LT_BOOL          1
1186    #define GxB_NO_LXOR_LT_FP32          1
1187    #define GxB_NO_LXOR_LT_FP64          1
1188    #define GxB_NO_LXOR_LT_INT16         1
1189    #define GxB_NO_LXOR_LT_INT32         1
1190    #define GxB_NO_LXOR_LT_INT64         1
1191    #define GxB_NO_LXOR_LT_INT8          1
1192    #define GxB_NO_LXOR_LT_UINT16        1
1193    #define GxB_NO_LXOR_LT_UINT32        1
1194    #define GxB_NO_LXOR_LT_UINT64        1
1195    #define GxB_NO_LXOR_LT_UINT8         1
1196 
1197    #define GxB_NO_LXOR_NE_FP32          1
1198    #define GxB_NO_LXOR_NE_FP64          1
1199    #define GxB_NO_LXOR_NE_INT16         1
1200    #define GxB_NO_LXOR_NE_INT32         1
1201    #define GxB_NO_LXOR_NE_INT64         1
1202    #define GxB_NO_LXOR_NE_INT8          1
1203    #define GxB_NO_LXOR_NE_UINT16        1
1204    #define GxB_NO_LXOR_NE_UINT32        1
1205    #define GxB_NO_LXOR_NE_UINT64        1
1206    #define GxB_NO_LXOR_NE_UINT8         1
1207    #define GxB_NO_LXOR_NE_FC32          1
1208    #define GxB_NO_LXOR_NE_FC64          1
1209 
1210 //------------------------------------------------------------
1211 // semirings with the MAX monoid
1212 //------------------------------------------------------------
1213 
1214 // MAX_PLUS, MAX_TIMES, MAX_FIRST, MAX_SECOND, and MAX_MIN are GrB_* builtins.
1215 
1216 //  50 semirings with MAX monoids (5 kinds, 10 real types each):
1217 //
1218 //      monoid  multiply ops
1219 //      MAX:    MIN, PLUS, TIMES, FIRST, SECOND
1220 
1221 // builtin GrB_*:
1222 // #define GxB_NO_MAX_MIN_FP32          1
1223 // #define GxB_NO_MAX_MIN_FP64          1
1224 // #define GxB_NO_MAX_MIN_INT16         1
1225 // #define GxB_NO_MAX_MIN_INT32         1
1226 // #define GxB_NO_MAX_MIN_INT64         1
1227 // #define GxB_NO_MAX_MIN_INT8          1
1228 // #define GxB_NO_MAX_MIN_UINT16        1
1229 // #define GxB_NO_MAX_MIN_UINT32        1
1230 // #define GxB_NO_MAX_MIN_UINT64        1
1231 // #define GxB_NO_MAX_MIN_UINT8         1
1232 
1233 // builtin GrB_*:
1234 // #define GxB_NO_MAX_PLUS_FP32         1
1235 // #define GxB_NO_MAX_PLUS_FP64         1
1236 // #define GxB_NO_MAX_PLUS_INT16        1
1237 // #define GxB_NO_MAX_PLUS_INT32        1
1238 // #define GxB_NO_MAX_PLUS_INT64        1
1239 // #define GxB_NO_MAX_PLUS_INT8         1
1240 // #define GxB_NO_MAX_PLUS_UINT16       1
1241 // #define GxB_NO_MAX_PLUS_UINT32       1
1242 // #define GxB_NO_MAX_PLUS_UINT64       1
1243 // #define GxB_NO_MAX_PLUS_UINT8        1
1244 
1245 // builtin GrB_*:
1246 // #define GxB_NO_MAX_TIMES_FP32        1
1247 // #define GxB_NO_MAX_TIMES_FP64        1
1248 // #define GxB_NO_MAX_TIMES_INT16       1
1249 // #define GxB_NO_MAX_TIMES_INT32       1
1250 // #define GxB_NO_MAX_TIMES_INT64       1
1251 // #define GxB_NO_MAX_TIMES_INT8        1
1252 // #define GxB_NO_MAX_TIMES_UINT16      1
1253 // #define GxB_NO_MAX_TIMES_UINT32      1
1254 // #define GxB_NO_MAX_TIMES_UINT64      1
1255 // #define GxB_NO_MAX_TIMES_UINT8       1
1256 
1257 // builtin GrB_*: also needed by GrB_reduce to vector
1258 // #define GxB_NO_MAX_FIRST_FP32        1
1259 // #define GxB_NO_MAX_FIRST_FP64        1
1260 // #define GxB_NO_MAX_FIRST_INT16       1
1261 // #define GxB_NO_MAX_FIRST_INT32       1
1262 // #define GxB_NO_MAX_FIRST_INT64       1
1263 // #define GxB_NO_MAX_FIRST_INT8        1
1264 // #define GxB_NO_MAX_FIRST_UINT16      1
1265 // #define GxB_NO_MAX_FIRST_UINT32      1
1266 // #define GxB_NO_MAX_FIRST_UINT64      1
1267 // #define GxB_NO_MAX_FIRST_UINT8       1
1268 
1269 // builtin GrB_*: also needed by GrB_reduce to vector
1270 // #define GxB_NO_MAX_SECOND_FP32       1
1271 // #define GxB_NO_MAX_SECOND_FP64       1
1272 // #define GxB_NO_MAX_SECOND_INT16      1
1273 // #define GxB_NO_MAX_SECOND_INT32      1
1274 // #define GxB_NO_MAX_SECOND_INT64      1
1275 // #define GxB_NO_MAX_SECOND_INT8       1
1276 // #define GxB_NO_MAX_SECOND_UINT16     1
1277 // #define GxB_NO_MAX_SECOND_UINT32     1
1278 // #define GxB_NO_MAX_SECOND_UINT64     1
1279 // #define GxB_NO_MAX_SECOND_UINT8      1
1280 
1281    #define GxB_NO_MAX_DIV_FP32          1
1282    #define GxB_NO_MAX_DIV_FP64          1
1283    #define GxB_NO_MAX_DIV_INT16         1
1284    #define GxB_NO_MAX_DIV_INT32         1
1285    #define GxB_NO_MAX_DIV_INT64         1
1286    #define GxB_NO_MAX_DIV_INT8          1
1287    #define GxB_NO_MAX_DIV_UINT16        1
1288    #define GxB_NO_MAX_DIV_UINT32        1
1289    #define GxB_NO_MAX_DIV_UINT64        1
1290    #define GxB_NO_MAX_DIV_UINT8         1
1291 
1292    #define GxB_NO_MAX_ANY_FP32          1
1293    #define GxB_NO_MAX_ANY_FP64          1
1294    #define GxB_NO_MAX_ANY_INT16         1
1295    #define GxB_NO_MAX_ANY_INT32         1
1296    #define GxB_NO_MAX_ANY_INT64         1
1297    #define GxB_NO_MAX_ANY_INT8          1
1298    #define GxB_NO_MAX_ANY_UINT16        1
1299    #define GxB_NO_MAX_ANY_UINT32        1
1300    #define GxB_NO_MAX_ANY_UINT64        1
1301    #define GxB_NO_MAX_ANY_UINT8         1
1302 
1303    #define GxB_NO_MAX_ISEQ_FP32         1
1304    #define GxB_NO_MAX_ISEQ_FP64         1
1305    #define GxB_NO_MAX_ISEQ_INT16        1
1306    #define GxB_NO_MAX_ISEQ_INT32        1
1307    #define GxB_NO_MAX_ISEQ_INT64        1
1308    #define GxB_NO_MAX_ISEQ_INT8         1
1309    #define GxB_NO_MAX_ISEQ_UINT16       1
1310    #define GxB_NO_MAX_ISEQ_UINT32       1
1311    #define GxB_NO_MAX_ISEQ_UINT64       1
1312    #define GxB_NO_MAX_ISEQ_UINT8        1
1313    #define GxB_NO_MAX_ISEQ_FC32         1
1314    #define GxB_NO_MAX_ISEQ_FC64         1
1315 
1316    #define GxB_NO_MAX_ISGE_FP32         1
1317    #define GxB_NO_MAX_ISGE_FP64         1
1318    #define GxB_NO_MAX_ISGE_INT16        1
1319    #define GxB_NO_MAX_ISGE_INT32        1
1320    #define GxB_NO_MAX_ISGE_INT64        1
1321    #define GxB_NO_MAX_ISGE_INT8         1
1322    #define GxB_NO_MAX_ISGE_UINT16       1
1323    #define GxB_NO_MAX_ISGE_UINT32       1
1324    #define GxB_NO_MAX_ISGE_UINT64       1
1325    #define GxB_NO_MAX_ISGE_UINT8        1
1326 
1327    #define GxB_NO_MAX_ISGT_FP32         1
1328    #define GxB_NO_MAX_ISGT_FP64         1
1329    #define GxB_NO_MAX_ISGT_INT16        1
1330    #define GxB_NO_MAX_ISGT_INT32        1
1331    #define GxB_NO_MAX_ISGT_INT64        1
1332    #define GxB_NO_MAX_ISGT_INT8         1
1333    #define GxB_NO_MAX_ISGT_UINT16       1
1334    #define GxB_NO_MAX_ISGT_UINT32       1
1335    #define GxB_NO_MAX_ISGT_UINT64       1
1336    #define GxB_NO_MAX_ISGT_UINT8        1
1337 
1338    #define GxB_NO_MAX_ISLE_FP32         1
1339    #define GxB_NO_MAX_ISLE_FP64         1
1340    #define GxB_NO_MAX_ISLE_INT16        1
1341    #define GxB_NO_MAX_ISLE_INT32        1
1342    #define GxB_NO_MAX_ISLE_INT64        1
1343    #define GxB_NO_MAX_ISLE_INT8         1
1344    #define GxB_NO_MAX_ISLE_UINT16       1
1345    #define GxB_NO_MAX_ISLE_UINT32       1
1346    #define GxB_NO_MAX_ISLE_UINT64       1
1347    #define GxB_NO_MAX_ISLE_UINT8        1
1348 
1349    #define GxB_NO_MAX_ISLT_FP32         1
1350    #define GxB_NO_MAX_ISLT_FP64         1
1351    #define GxB_NO_MAX_ISLT_INT16        1
1352    #define GxB_NO_MAX_ISLT_INT32        1
1353    #define GxB_NO_MAX_ISLT_INT64        1
1354    #define GxB_NO_MAX_ISLT_INT8         1
1355    #define GxB_NO_MAX_ISLT_UINT16       1
1356    #define GxB_NO_MAX_ISLT_UINT32       1
1357    #define GxB_NO_MAX_ISLT_UINT64       1
1358    #define GxB_NO_MAX_ISLT_UINT8        1
1359 
1360    #define GxB_NO_MAX_ISNE_FP32         1
1361    #define GxB_NO_MAX_ISNE_FP64         1
1362    #define GxB_NO_MAX_ISNE_INT16        1
1363    #define GxB_NO_MAX_ISNE_INT32        1
1364    #define GxB_NO_MAX_ISNE_INT64        1
1365    #define GxB_NO_MAX_ISNE_INT8         1
1366    #define GxB_NO_MAX_ISNE_UINT16       1
1367    #define GxB_NO_MAX_ISNE_UINT32       1
1368    #define GxB_NO_MAX_ISNE_UINT64       1
1369    #define GxB_NO_MAX_ISNE_UINT8        1
1370    #define GxB_NO_MAX_ISNE_FC32         1
1371    #define GxB_NO_MAX_ISNE_FC64         1
1372 
1373    #define GxB_NO_MAX_LAND_FP32         1
1374    #define GxB_NO_MAX_LAND_FP64         1
1375    #define GxB_NO_MAX_LAND_INT16        1
1376    #define GxB_NO_MAX_LAND_INT32        1
1377    #define GxB_NO_MAX_LAND_INT64        1
1378    #define GxB_NO_MAX_LAND_INT8         1
1379    #define GxB_NO_MAX_LAND_UINT16       1
1380    #define GxB_NO_MAX_LAND_UINT32       1
1381    #define GxB_NO_MAX_LAND_UINT64       1
1382    #define GxB_NO_MAX_LAND_UINT8        1
1383 
1384    #define GxB_NO_MAX_LOR_FP32          1
1385    #define GxB_NO_MAX_LOR_FP64          1
1386    #define GxB_NO_MAX_LOR_INT16         1
1387    #define GxB_NO_MAX_LOR_INT32         1
1388    #define GxB_NO_MAX_LOR_INT64         1
1389    #define GxB_NO_MAX_LOR_INT8          1
1390    #define GxB_NO_MAX_LOR_UINT16        1
1391    #define GxB_NO_MAX_LOR_UINT32        1
1392    #define GxB_NO_MAX_LOR_UINT64        1
1393    #define GxB_NO_MAX_LOR_UINT8         1
1394 
1395    #define GxB_NO_MAX_LXOR_FP32         1
1396    #define GxB_NO_MAX_LXOR_FP64         1
1397    #define GxB_NO_MAX_LXOR_INT16        1
1398    #define GxB_NO_MAX_LXOR_INT32        1
1399    #define GxB_NO_MAX_LXOR_INT64        1
1400    #define GxB_NO_MAX_LXOR_INT8         1
1401    #define GxB_NO_MAX_LXOR_UINT16       1
1402    #define GxB_NO_MAX_LXOR_UINT32       1
1403    #define GxB_NO_MAX_LXOR_UINT64       1
1404    #define GxB_NO_MAX_LXOR_UINT8        1
1405 
1406    #define GxB_NO_MAX_MAX_FP32          1
1407    #define GxB_NO_MAX_MAX_FP64          1
1408    #define GxB_NO_MAX_MAX_INT16         1
1409    #define GxB_NO_MAX_MAX_INT32         1
1410    #define GxB_NO_MAX_MAX_INT64         1
1411    #define GxB_NO_MAX_MAX_INT8          1
1412    #define GxB_NO_MAX_MAX_UINT16        1
1413    #define GxB_NO_MAX_MAX_UINT32        1
1414    #define GxB_NO_MAX_MAX_UINT64        1
1415    #define GxB_NO_MAX_MAX_UINT8         1
1416 
1417    #define GxB_NO_MAX_MINUS_FP32        1
1418    #define GxB_NO_MAX_MINUS_FP64        1
1419    #define GxB_NO_MAX_MINUS_INT16       1
1420    #define GxB_NO_MAX_MINUS_INT32       1
1421    #define GxB_NO_MAX_MINUS_INT64       1
1422    #define GxB_NO_MAX_MINUS_INT8        1
1423    #define GxB_NO_MAX_MINUS_UINT16      1
1424    #define GxB_NO_MAX_MINUS_UINT32      1
1425    #define GxB_NO_MAX_MINUS_UINT64      1
1426    #define GxB_NO_MAX_MINUS_UINT8       1
1427 
1428    #define GxB_NO_MAX_RDIV_FP32         1
1429    #define GxB_NO_MAX_RDIV_FP64         1
1430    #define GxB_NO_MAX_RDIV_INT16        1
1431    #define GxB_NO_MAX_RDIV_INT32        1
1432    #define GxB_NO_MAX_RDIV_INT64        1
1433    #define GxB_NO_MAX_RDIV_INT8         1
1434    #define GxB_NO_MAX_RDIV_UINT16       1
1435    #define GxB_NO_MAX_RDIV_UINT32       1
1436    #define GxB_NO_MAX_RDIV_UINT64       1
1437    #define GxB_NO_MAX_RDIV_UINT8        1
1438 
1439    #define GxB_NO_MAX_RMINUS_FP32       1
1440    #define GxB_NO_MAX_RMINUS_FP64       1
1441    #define GxB_NO_MAX_RMINUS_INT16      1
1442    #define GxB_NO_MAX_RMINUS_INT32      1
1443    #define GxB_NO_MAX_RMINUS_INT64      1
1444    #define GxB_NO_MAX_RMINUS_INT8       1
1445    #define GxB_NO_MAX_RMINUS_UINT16     1
1446    #define GxB_NO_MAX_RMINUS_UINT32     1
1447    #define GxB_NO_MAX_RMINUS_UINT64     1
1448    #define GxB_NO_MAX_RMINUS_UINT8      1
1449 
1450 //------------------------------------------------------------
1451 // semirings with the MIN monoid
1452 //------------------------------------------------------------
1453 
1454 // MIN_PLUS, MIN_TIMES, MIN_FIRST, MIN_SECOND, and MIN_MAX are GrB_* builtins.
1455 
1456 //  50 semirings with MIN monoids (6 kinds, 10 real types each):
1457 //
1458 //      monoid  multiply ops
1459 //      MIN:    MAX, PLUS, TIMES, FIRST, SECOND
1460 
1461 // builtin GrB_*:
1462 // #define GxB_NO_MIN_MAX_FP32          1
1463 // #define GxB_NO_MIN_MAX_FP64          1
1464 // #define GxB_NO_MIN_MAX_INT16         1
1465 // #define GxB_NO_MIN_MAX_INT32         1
1466 // #define GxB_NO_MIN_MAX_INT64         1
1467 // #define GxB_NO_MIN_MAX_INT8          1
1468 // #define GxB_NO_MIN_MAX_UINT16        1
1469 // #define GxB_NO_MIN_MAX_UINT32        1
1470 // #define GxB_NO_MIN_MAX_UINT64        1
1471 // #define GxB_NO_MIN_MAX_UINT8         1
1472 
1473 // builtin GrB_*:
1474 // #define GxB_NO_MIN_PLUS_FP32         1
1475 // #define GxB_NO_MIN_PLUS_FP64         1
1476 // #define GxB_NO_MIN_PLUS_INT16        1
1477 // #define GxB_NO_MIN_PLUS_INT32        1
1478 // #define GxB_NO_MIN_PLUS_INT64        1
1479 // #define GxB_NO_MIN_PLUS_INT8         1
1480 // #define GxB_NO_MIN_PLUS_UINT16       1
1481 // #define GxB_NO_MIN_PLUS_UINT32       1
1482 // #define GxB_NO_MIN_PLUS_UINT64       1
1483 // #define GxB_NO_MIN_PLUS_UINT8        1
1484 
1485 // builtin GrB_*:
1486 // #define GxB_NO_MIN_TIMES_FP32        1
1487 // #define GxB_NO_MIN_TIMES_FP64        1
1488 // #define GxB_NO_MIN_TIMES_INT16       1
1489 // #define GxB_NO_MIN_TIMES_INT32       1
1490 // #define GxB_NO_MIN_TIMES_INT64       1
1491 // #define GxB_NO_MIN_TIMES_INT8        1
1492 // #define GxB_NO_MIN_TIMES_UINT16      1
1493 // #define GxB_NO_MIN_TIMES_UINT32      1
1494 // #define GxB_NO_MIN_TIMES_UINT64      1
1495 // #define GxB_NO_MIN_TIMES_UINT8       1
1496 
1497 // builtin GrB_*: also needed by GrB_reduce to vector
1498 // #define GxB_NO_MIN_FIRST_FP32        1
1499 // #define GxB_NO_MIN_FIRST_FP64        1
1500 // #define GxB_NO_MIN_FIRST_INT16       1
1501 // #define GxB_NO_MIN_FIRST_INT32       1
1502 // #define GxB_NO_MIN_FIRST_INT64       1
1503 // #define GxB_NO_MIN_FIRST_INT8        1
1504 // #define GxB_NO_MIN_FIRST_UINT16      1
1505 // #define GxB_NO_MIN_FIRST_UINT32      1
1506 // #define GxB_NO_MIN_FIRST_UINT64      1
1507 // #define GxB_NO_MIN_FIRST_UINT8       1
1508 
1509 // builtin GrB_*: also needed by GrB_reduce to vector
1510 // #define GxB_NO_MIN_SECOND_FP32       1
1511 // #define GxB_NO_MIN_SECOND_FP64       1
1512 // #define GxB_NO_MIN_SECOND_INT16      1
1513 // #define GxB_NO_MIN_SECOND_INT32      1
1514 // #define GxB_NO_MIN_SECOND_INT64      1
1515 // #define GxB_NO_MIN_SECOND_INT8       1
1516 // #define GxB_NO_MIN_SECOND_UINT16     1
1517 // #define GxB_NO_MIN_SECOND_UINT32     1
1518 // #define GxB_NO_MIN_SECOND_UINT64     1
1519 // #define GxB_NO_MIN_SECOND_UINT8      1
1520 
1521    #define GxB_NO_MIN_DIV_FP32          1
1522    #define GxB_NO_MIN_DIV_FP64          1
1523    #define GxB_NO_MIN_DIV_INT16         1
1524    #define GxB_NO_MIN_DIV_INT32         1
1525    #define GxB_NO_MIN_DIV_INT64         1
1526    #define GxB_NO_MIN_DIV_INT8          1
1527    #define GxB_NO_MIN_DIV_UINT16        1
1528    #define GxB_NO_MIN_DIV_UINT32        1
1529    #define GxB_NO_MIN_DIV_UINT64        1
1530    #define GxB_NO_MIN_DIV_UINT8         1
1531 
1532    #define GxB_NO_MIN_ANY_FP32          1
1533    #define GxB_NO_MIN_ANY_FP64          1
1534    #define GxB_NO_MIN_ANY_INT16         1
1535    #define GxB_NO_MIN_ANY_INT32         1
1536    #define GxB_NO_MIN_ANY_INT64         1
1537    #define GxB_NO_MIN_ANY_INT8          1
1538    #define GxB_NO_MIN_ANY_UINT16        1
1539    #define GxB_NO_MIN_ANY_UINT32        1
1540    #define GxB_NO_MIN_ANY_UINT64        1
1541    #define GxB_NO_MIN_ANY_UINT8         1
1542 
1543    #define GxB_NO_MIN_ISEQ_FP32         1
1544    #define GxB_NO_MIN_ISEQ_FP64         1
1545    #define GxB_NO_MIN_ISEQ_INT16        1
1546    #define GxB_NO_MIN_ISEQ_INT32        1
1547    #define GxB_NO_MIN_ISEQ_INT64        1
1548    #define GxB_NO_MIN_ISEQ_INT8         1
1549    #define GxB_NO_MIN_ISEQ_UINT16       1
1550    #define GxB_NO_MIN_ISEQ_UINT32       1
1551    #define GxB_NO_MIN_ISEQ_UINT64       1
1552    #define GxB_NO_MIN_ISEQ_UINT8        1
1553    #define GxB_NO_MIN_ISEQ_FC32         1
1554    #define GxB_NO_MIN_ISEQ_FC64         1
1555 
1556    #define GxB_NO_MIN_ISGE_FP32         1
1557    #define GxB_NO_MIN_ISGE_FP64         1
1558    #define GxB_NO_MIN_ISGE_INT16        1
1559    #define GxB_NO_MIN_ISGE_INT32        1
1560    #define GxB_NO_MIN_ISGE_INT64        1
1561    #define GxB_NO_MIN_ISGE_INT8         1
1562    #define GxB_NO_MIN_ISGE_UINT16       1
1563    #define GxB_NO_MIN_ISGE_UINT32       1
1564    #define GxB_NO_MIN_ISGE_UINT64       1
1565    #define GxB_NO_MIN_ISGE_UINT8        1
1566 
1567    #define GxB_NO_MIN_ISGT_FP32         1
1568    #define GxB_NO_MIN_ISGT_FP64         1
1569    #define GxB_NO_MIN_ISGT_INT16        1
1570    #define GxB_NO_MIN_ISGT_INT32        1
1571    #define GxB_NO_MIN_ISGT_INT64        1
1572    #define GxB_NO_MIN_ISGT_INT8         1
1573    #define GxB_NO_MIN_ISGT_UINT16       1
1574    #define GxB_NO_MIN_ISGT_UINT32       1
1575    #define GxB_NO_MIN_ISGT_UINT64       1
1576    #define GxB_NO_MIN_ISGT_UINT8        1
1577 
1578    #define GxB_NO_MIN_ISLE_FP32         1
1579    #define GxB_NO_MIN_ISLE_FP64         1
1580    #define GxB_NO_MIN_ISLE_INT16        1
1581    #define GxB_NO_MIN_ISLE_INT32        1
1582    #define GxB_NO_MIN_ISLE_INT64        1
1583    #define GxB_NO_MIN_ISLE_INT8         1
1584    #define GxB_NO_MIN_ISLE_UINT16       1
1585    #define GxB_NO_MIN_ISLE_UINT32       1
1586    #define GxB_NO_MIN_ISLE_UINT64       1
1587    #define GxB_NO_MIN_ISLE_UINT8        1
1588 
1589    #define GxB_NO_MIN_ISLT_FP32         1
1590    #define GxB_NO_MIN_ISLT_FP64         1
1591    #define GxB_NO_MIN_ISLT_INT16        1
1592    #define GxB_NO_MIN_ISLT_INT32        1
1593    #define GxB_NO_MIN_ISLT_INT64        1
1594    #define GxB_NO_MIN_ISLT_INT8         1
1595    #define GxB_NO_MIN_ISLT_UINT16       1
1596    #define GxB_NO_MIN_ISLT_UINT32       1
1597    #define GxB_NO_MIN_ISLT_UINT64       1
1598    #define GxB_NO_MIN_ISLT_UINT8        1
1599 
1600    #define GxB_NO_MIN_ISNE_FP32         1
1601    #define GxB_NO_MIN_ISNE_FP64         1
1602    #define GxB_NO_MIN_ISNE_INT16        1
1603    #define GxB_NO_MIN_ISNE_INT32        1
1604    #define GxB_NO_MIN_ISNE_INT64        1
1605    #define GxB_NO_MIN_ISNE_INT8         1
1606    #define GxB_NO_MIN_ISNE_UINT16       1
1607    #define GxB_NO_MIN_ISNE_UINT32       1
1608    #define GxB_NO_MIN_ISNE_UINT64       1
1609    #define GxB_NO_MIN_ISNE_UINT8        1
1610    #define GxB_NO_MIN_ISNE_FC32         1
1611    #define GxB_NO_MIN_ISNE_FC64         1
1612 
1613    #define GxB_NO_MIN_LAND_FP32         1
1614    #define GxB_NO_MIN_LAND_FP64         1
1615    #define GxB_NO_MIN_LAND_INT16        1
1616    #define GxB_NO_MIN_LAND_INT32        1
1617    #define GxB_NO_MIN_LAND_INT64        1
1618    #define GxB_NO_MIN_LAND_INT8         1
1619    #define GxB_NO_MIN_LAND_UINT16       1
1620    #define GxB_NO_MIN_LAND_UINT32       1
1621    #define GxB_NO_MIN_LAND_UINT64       1
1622    #define GxB_NO_MIN_LAND_UINT8        1
1623 
1624    #define GxB_NO_MIN_LOR_FP32          1
1625    #define GxB_NO_MIN_LOR_FP64          1
1626    #define GxB_NO_MIN_LOR_INT16         1
1627    #define GxB_NO_MIN_LOR_INT32         1
1628    #define GxB_NO_MIN_LOR_INT64         1
1629    #define GxB_NO_MIN_LOR_INT8          1
1630    #define GxB_NO_MIN_LOR_UINT16        1
1631    #define GxB_NO_MIN_LOR_UINT32        1
1632    #define GxB_NO_MIN_LOR_UINT64        1
1633    #define GxB_NO_MIN_LOR_UINT8         1
1634 
1635    #define GxB_NO_MIN_LXOR_FP32         1
1636    #define GxB_NO_MIN_LXOR_FP64         1
1637    #define GxB_NO_MIN_LXOR_INT16        1
1638    #define GxB_NO_MIN_LXOR_INT32        1
1639    #define GxB_NO_MIN_LXOR_INT64        1
1640    #define GxB_NO_MIN_LXOR_INT8         1
1641    #define GxB_NO_MIN_LXOR_UINT16       1
1642    #define GxB_NO_MIN_LXOR_UINT32       1
1643    #define GxB_NO_MIN_LXOR_UINT64       1
1644    #define GxB_NO_MIN_LXOR_UINT8        1
1645 
1646    #define GxB_NO_MIN_MINUS_FP32        1
1647    #define GxB_NO_MIN_MINUS_FP64        1
1648    #define GxB_NO_MIN_MINUS_INT16       1
1649    #define GxB_NO_MIN_MINUS_INT32       1
1650    #define GxB_NO_MIN_MINUS_INT64       1
1651    #define GxB_NO_MIN_MINUS_INT8        1
1652    #define GxB_NO_MIN_MINUS_UINT16      1
1653    #define GxB_NO_MIN_MINUS_UINT32      1
1654    #define GxB_NO_MIN_MINUS_UINT64      1
1655    #define GxB_NO_MIN_MINUS_UINT8       1
1656 
1657    #define GxB_NO_MIN_MIN_FP32          1
1658    #define GxB_NO_MIN_MIN_FP64          1
1659    #define GxB_NO_MIN_MIN_INT16         1
1660    #define GxB_NO_MIN_MIN_INT32         1
1661    #define GxB_NO_MIN_MIN_INT64         1
1662    #define GxB_NO_MIN_MIN_INT8          1
1663    #define GxB_NO_MIN_MIN_UINT16        1
1664    #define GxB_NO_MIN_MIN_UINT32        1
1665    #define GxB_NO_MIN_MIN_UINT64        1
1666    #define GxB_NO_MIN_MIN_UINT8         1
1667 
1668    #define GxB_NO_MIN_RDIV_FP32         1
1669    #define GxB_NO_MIN_RDIV_FP64         1
1670    #define GxB_NO_MIN_RDIV_INT16        1
1671    #define GxB_NO_MIN_RDIV_INT32        1
1672    #define GxB_NO_MIN_RDIV_INT64        1
1673    #define GxB_NO_MIN_RDIV_INT8         1
1674    #define GxB_NO_MIN_RDIV_UINT16       1
1675    #define GxB_NO_MIN_RDIV_UINT32       1
1676    #define GxB_NO_MIN_RDIV_UINT64       1
1677    #define GxB_NO_MIN_RDIV_UINT8        1
1678 
1679    #define GxB_NO_MIN_RMINUS_FP32       1
1680    #define GxB_NO_MIN_RMINUS_FP64       1
1681    #define GxB_NO_MIN_RMINUS_INT16      1
1682    #define GxB_NO_MIN_RMINUS_INT32      1
1683    #define GxB_NO_MIN_RMINUS_INT64      1
1684    #define GxB_NO_MIN_RMINUS_INT8       1
1685    #define GxB_NO_MIN_RMINUS_UINT16     1
1686    #define GxB_NO_MIN_RMINUS_UINT32     1
1687    #define GxB_NO_MIN_RMINUS_UINT64     1
1688    #define GxB_NO_MIN_RMINUS_UINT8      1
1689 
1690 //------------------------------------------------------------
1691 // semirings with the PLUS monoid
1692 //------------------------------------------------------------
1693 
1694 // PLUS_TIMES and PLUS_MIN are GrB_* builtin (not for FC23 or FC64).
1695 
1696 //  70 semirings with PLUS monoids (10 real types each):
1697 //
1698 //      monoid  multiply ops
1699 //      PLUS:  MIN, MAX, PLUS, TIMES, FIRST, SECOND, PAIR
1700 
1701 // not GrB_*, used in LAGraph: triangle count and BFS
1702 // #define GxB_NO_PLUS_PAIR_FP32        1
1703 // #define GxB_NO_PLUS_PAIR_FP64        1
1704 // #define GxB_NO_PLUS_PAIR_INT16       1
1705 // #define GxB_NO_PLUS_PAIR_INT32       1
1706 // #define GxB_NO_PLUS_PAIR_INT64       1
1707 // #define GxB_NO_PLUS_PAIR_INT8        1
1708 // #define GxB_NO_PLUS_PAIR_UINT16      1
1709 // #define GxB_NO_PLUS_PAIR_UINT32      1
1710 // #define GxB_NO_PLUS_PAIR_UINT64      1
1711 // #define GxB_NO_PLUS_PAIR_UINT8       1
1712 
1713 // builtin GrB_*:
1714 // #define GxB_NO_PLUS_MIN_FP32         1
1715 // #define GxB_NO_PLUS_MIN_FP64         1
1716 // #define GxB_NO_PLUS_MIN_INT16        1
1717 // #define GxB_NO_PLUS_MIN_INT32        1
1718 // #define GxB_NO_PLUS_MIN_INT64        1
1719 // #define GxB_NO_PLUS_MIN_INT8         1
1720 // #define GxB_NO_PLUS_MIN_UINT16       1
1721 // #define GxB_NO_PLUS_MIN_UINT32       1
1722 // #define GxB_NO_PLUS_MIN_UINT64       1
1723 // #define GxB_NO_PLUS_MIN_UINT8        1
1724 
1725 // #define GxB_NO_PLUS_MAX_FP32         1
1726 // #define GxB_NO_PLUS_MAX_FP64         1
1727 // #define GxB_NO_PLUS_MAX_INT16        1
1728 // #define GxB_NO_PLUS_MAX_INT32        1
1729 // #define GxB_NO_PLUS_MAX_INT64        1
1730 // #define GxB_NO_PLUS_MAX_INT8         1
1731 // #define GxB_NO_PLUS_MAX_UINT16       1
1732 // #define GxB_NO_PLUS_MAX_UINT32       1
1733 // #define GxB_NO_PLUS_MAX_UINT64       1
1734 // #define GxB_NO_PLUS_MAX_UINT8        1
1735 
1736 // not GrB_*, used in LAGraph: sparse deep neural network
1737 // #define GxB_NO_PLUS_PLUS_FP32        1
1738 // #define GxB_NO_PLUS_PLUS_FP64        1
1739 // #define GxB_NO_PLUS_PLUS_INT16       1
1740 // #define GxB_NO_PLUS_PLUS_INT32       1
1741 // #define GxB_NO_PLUS_PLUS_INT64       1
1742 // #define GxB_NO_PLUS_PLUS_INT8        1
1743 // #define GxB_NO_PLUS_PLUS_UINT16      1
1744 // #define GxB_NO_PLUS_PLUS_UINT32      1
1745 // #define GxB_NO_PLUS_PLUS_UINT64      1
1746 // #define GxB_NO_PLUS_PLUS_UINT8       1
1747 
1748 // builtin GrB_*: the classical semiring of linear algebra
1749 // #define GxB_NO_PLUS_TIMES_FP32       1
1750 // #define GxB_NO_PLUS_TIMES_FP64       1
1751 // #define GxB_NO_PLUS_TIMES_INT16      1
1752 // #define GxB_NO_PLUS_TIMES_INT32      1
1753 // #define GxB_NO_PLUS_TIMES_INT64      1
1754 // #define GxB_NO_PLUS_TIMES_INT8       1
1755 // #define GxB_NO_PLUS_TIMES_UINT16     1
1756 // #define GxB_NO_PLUS_TIMES_UINT32     1
1757 // #define GxB_NO_PLUS_TIMES_UINT64     1
1758 // #define GxB_NO_PLUS_TIMES_UINT8      1
1759 
1760 // not GrB_*, used in LAGraph: pagerank and Betweeness-Centrality
1761 // also needed by GrB_reduce to vector
1762 // #define GxB_NO_PLUS_FIRST_FP32       1
1763 // #define GxB_NO_PLUS_FIRST_FP64       1
1764 // #define GxB_NO_PLUS_FIRST_INT16      1
1765 // #define GxB_NO_PLUS_FIRST_INT32      1
1766 // #define GxB_NO_PLUS_FIRST_INT64      1
1767 // #define GxB_NO_PLUS_FIRST_INT8       1
1768 // #define GxB_NO_PLUS_FIRST_UINT16     1
1769 // #define GxB_NO_PLUS_FIRST_UINT32     1
1770 // #define GxB_NO_PLUS_FIRST_UINT64     1
1771 // #define GxB_NO_PLUS_FIRST_UINT8      1
1772 
1773 // not GrB_*, used in LAGraph: Betweeness-Centrality and PageRank
1774 // also needed by GrB_reduce to vector
1775 // #define GxB_NO_PLUS_SECOND_FP32      1
1776 // #define GxB_NO_PLUS_SECOND_FP64      1
1777 // #define GxB_NO_PLUS_SECOND_INT16     1
1778 // #define GxB_NO_PLUS_SECOND_INT32     1
1779 // #define GxB_NO_PLUS_SECOND_INT64     1
1780 // #define GxB_NO_PLUS_SECOND_INT8      1
1781 // #define GxB_NO_PLUS_SECOND_UINT16    1
1782 // #define GxB_NO_PLUS_SECOND_UINT32    1
1783 // #define GxB_NO_PLUS_SECOND_UINT64    1
1784 // #define GxB_NO_PLUS_SECOND_UINT8     1
1785 
1786    #define GxB_NO_PLUS_DIV_FP32         1
1787    #define GxB_NO_PLUS_DIV_FP64         1
1788    #define GxB_NO_PLUS_DIV_INT16        1
1789    #define GxB_NO_PLUS_DIV_INT32        1
1790    #define GxB_NO_PLUS_DIV_INT64        1
1791    #define GxB_NO_PLUS_DIV_INT8         1
1792    #define GxB_NO_PLUS_DIV_UINT16       1
1793    #define GxB_NO_PLUS_DIV_UINT32       1
1794    #define GxB_NO_PLUS_DIV_UINT64       1
1795    #define GxB_NO_PLUS_DIV_UINT8        1
1796 
1797    #define GxB_NO_PLUS_ANY_FP32         1
1798    #define GxB_NO_PLUS_ANY_FP64         1
1799    #define GxB_NO_PLUS_ANY_INT16        1
1800    #define GxB_NO_PLUS_ANY_INT32        1
1801    #define GxB_NO_PLUS_ANY_INT64        1
1802    #define GxB_NO_PLUS_ANY_INT8         1
1803    #define GxB_NO_PLUS_ANY_UINT16       1
1804    #define GxB_NO_PLUS_ANY_UINT32       1
1805    #define GxB_NO_PLUS_ANY_UINT64       1
1806    #define GxB_NO_PLUS_ANY_UINT8        1
1807 
1808    #define GxB_NO_PLUS_ISEQ_FP32        1
1809    #define GxB_NO_PLUS_ISEQ_FP64        1
1810    #define GxB_NO_PLUS_ISEQ_INT16       1
1811    #define GxB_NO_PLUS_ISEQ_INT32       1
1812    #define GxB_NO_PLUS_ISEQ_INT64       1
1813    #define GxB_NO_PLUS_ISEQ_INT8        1
1814    #define GxB_NO_PLUS_ISEQ_UINT16      1
1815    #define GxB_NO_PLUS_ISEQ_UINT32      1
1816    #define GxB_NO_PLUS_ISEQ_UINT64      1
1817    #define GxB_NO_PLUS_ISEQ_UINT8       1
1818    #define GxB_NO_PLUS_ISEQ_FC32        1
1819    #define GxB_NO_PLUS_ISEQ_FC64        1
1820 
1821    #define GxB_NO_PLUS_ISGE_FP32        1
1822    #define GxB_NO_PLUS_ISGE_FP64        1
1823    #define GxB_NO_PLUS_ISGE_INT16       1
1824    #define GxB_NO_PLUS_ISGE_INT32       1
1825    #define GxB_NO_PLUS_ISGE_INT64       1
1826    #define GxB_NO_PLUS_ISGE_INT8        1
1827    #define GxB_NO_PLUS_ISGE_UINT16      1
1828    #define GxB_NO_PLUS_ISGE_UINT32      1
1829    #define GxB_NO_PLUS_ISGE_UINT64      1
1830    #define GxB_NO_PLUS_ISGE_UINT8       1
1831 
1832    #define GxB_NO_PLUS_ISGT_FP32        1
1833    #define GxB_NO_PLUS_ISGT_FP64        1
1834    #define GxB_NO_PLUS_ISGT_INT16       1
1835    #define GxB_NO_PLUS_ISGT_INT32       1
1836    #define GxB_NO_PLUS_ISGT_INT64       1
1837    #define GxB_NO_PLUS_ISGT_INT8        1
1838    #define GxB_NO_PLUS_ISGT_UINT16      1
1839    #define GxB_NO_PLUS_ISGT_UINT32      1
1840    #define GxB_NO_PLUS_ISGT_UINT64      1
1841    #define GxB_NO_PLUS_ISGT_UINT8       1
1842 
1843    #define GxB_NO_PLUS_ISLE_FP32        1
1844    #define GxB_NO_PLUS_ISLE_FP64        1
1845    #define GxB_NO_PLUS_ISLE_INT16       1
1846    #define GxB_NO_PLUS_ISLE_INT32       1
1847    #define GxB_NO_PLUS_ISLE_INT64       1
1848    #define GxB_NO_PLUS_ISLE_INT8        1
1849    #define GxB_NO_PLUS_ISLE_UINT16      1
1850    #define GxB_NO_PLUS_ISLE_UINT32      1
1851    #define GxB_NO_PLUS_ISLE_UINT64      1
1852    #define GxB_NO_PLUS_ISLE_UINT8       1
1853 
1854    #define GxB_NO_PLUS_ISLT_FP32        1
1855    #define GxB_NO_PLUS_ISLT_FP64        1
1856    #define GxB_NO_PLUS_ISLT_INT16       1
1857    #define GxB_NO_PLUS_ISLT_INT32       1
1858    #define GxB_NO_PLUS_ISLT_INT64       1
1859    #define GxB_NO_PLUS_ISLT_INT8        1
1860    #define GxB_NO_PLUS_ISLT_UINT16      1
1861    #define GxB_NO_PLUS_ISLT_UINT32      1
1862    #define GxB_NO_PLUS_ISLT_UINT64      1
1863    #define GxB_NO_PLUS_ISLT_UINT8       1
1864 
1865    #define GxB_NO_PLUS_ISNE_FP32        1
1866    #define GxB_NO_PLUS_ISNE_FP64        1
1867    #define GxB_NO_PLUS_ISNE_INT16       1
1868    #define GxB_NO_PLUS_ISNE_INT32       1
1869    #define GxB_NO_PLUS_ISNE_INT64       1
1870    #define GxB_NO_PLUS_ISNE_INT8        1
1871    #define GxB_NO_PLUS_ISNE_UINT16      1
1872    #define GxB_NO_PLUS_ISNE_UINT32      1
1873    #define GxB_NO_PLUS_ISNE_UINT64      1
1874    #define GxB_NO_PLUS_ISNE_UINT8       1
1875    #define GxB_NO_PLUS_ISNE_FC32        1
1876    #define GxB_NO_PLUS_ISNE_FC64        1
1877 
1878    #define GxB_NO_PLUS_LAND_FP32        1
1879    #define GxB_NO_PLUS_LAND_FP64        1
1880    #define GxB_NO_PLUS_LAND_INT16       1
1881    #define GxB_NO_PLUS_LAND_INT32       1
1882    #define GxB_NO_PLUS_LAND_INT64       1
1883    #define GxB_NO_PLUS_LAND_INT8        1
1884    #define GxB_NO_PLUS_LAND_UINT16      1
1885    #define GxB_NO_PLUS_LAND_UINT32      1
1886    #define GxB_NO_PLUS_LAND_UINT64      1
1887    #define GxB_NO_PLUS_LAND_UINT8       1
1888 
1889    #define GxB_NO_PLUS_LOR_FP32         1
1890    #define GxB_NO_PLUS_LOR_FP64         1
1891    #define GxB_NO_PLUS_LOR_INT16        1
1892    #define GxB_NO_PLUS_LOR_INT32        1
1893    #define GxB_NO_PLUS_LOR_INT64        1
1894    #define GxB_NO_PLUS_LOR_INT8         1
1895    #define GxB_NO_PLUS_LOR_UINT16       1
1896    #define GxB_NO_PLUS_LOR_UINT32       1
1897    #define GxB_NO_PLUS_LOR_UINT64       1
1898    #define GxB_NO_PLUS_LOR_UINT8        1
1899 
1900    #define GxB_NO_PLUS_LXOR_FP32        1
1901    #define GxB_NO_PLUS_LXOR_FP64        1
1902    #define GxB_NO_PLUS_LXOR_INT16       1
1903    #define GxB_NO_PLUS_LXOR_INT32       1
1904    #define GxB_NO_PLUS_LXOR_INT64       1
1905    #define GxB_NO_PLUS_LXOR_INT8        1
1906    #define GxB_NO_PLUS_LXOR_UINT16      1
1907    #define GxB_NO_PLUS_LXOR_UINT32      1
1908    #define GxB_NO_PLUS_LXOR_UINT64      1
1909    #define GxB_NO_PLUS_LXOR_UINT8       1
1910 
1911    #define GxB_NO_PLUS_MINUS_FP32       1
1912    #define GxB_NO_PLUS_MINUS_FP64       1
1913    #define GxB_NO_PLUS_MINUS_INT16      1
1914    #define GxB_NO_PLUS_MINUS_INT32      1
1915    #define GxB_NO_PLUS_MINUS_INT64      1
1916    #define GxB_NO_PLUS_MINUS_INT8       1
1917    #define GxB_NO_PLUS_MINUS_UINT16     1
1918    #define GxB_NO_PLUS_MINUS_UINT32     1
1919    #define GxB_NO_PLUS_MINUS_UINT64     1
1920    #define GxB_NO_PLUS_MINUS_UINT8      1
1921 
1922    #define GxB_NO_PLUS_RDIV_FP32        1
1923    #define GxB_NO_PLUS_RDIV_FP64        1
1924    #define GxB_NO_PLUS_RDIV_INT16       1
1925    #define GxB_NO_PLUS_RDIV_INT32       1
1926    #define GxB_NO_PLUS_RDIV_INT64       1
1927    #define GxB_NO_PLUS_RDIV_INT8        1
1928    #define GxB_NO_PLUS_RDIV_UINT16      1
1929    #define GxB_NO_PLUS_RDIV_UINT32      1
1930    #define GxB_NO_PLUS_RDIV_UINT64      1
1931    #define GxB_NO_PLUS_RDIV_UINT8       1
1932 
1933    #define GxB_NO_PLUS_RMINUS_FP32      1
1934    #define GxB_NO_PLUS_RMINUS_FP64      1
1935    #define GxB_NO_PLUS_RMINUS_INT16     1
1936    #define GxB_NO_PLUS_RMINUS_INT32     1
1937    #define GxB_NO_PLUS_RMINUS_INT64     1
1938    #define GxB_NO_PLUS_RMINUS_INT8      1
1939    #define GxB_NO_PLUS_RMINUS_UINT16    1
1940    #define GxB_NO_PLUS_RMINUS_UINT32    1
1941    #define GxB_NO_PLUS_RMINUS_UINT64    1
1942    #define GxB_NO_PLUS_RMINUS_UINT8     1
1943 
1944 //------------------------------------------------------------
1945 // semirings with the TIMES monoid
1946 //------------------------------------------------------------
1947 
1948 // No builtin GrB_* semirings use the TIMES monoid, and none are used
1949 // in LAGraph 0.1 yet.  TIMES_FIRST and TIMES_SECOND are needed by
1950 // GrB_reduce to vector.
1951 
1952 //  60 semirings with TIMES monoids (10 real types each):
1953 //
1954 //      monoid  multiply ops
1955 //      TIMES:  MIN, MAX, PLUS, TIMES, FIRST, SECOND
1956 
1957 // #define GxB_NO_TIMES_MIN_FP32        1
1958 // #define GxB_NO_TIMES_MIN_FP64        1
1959 // #define GxB_NO_TIMES_MIN_INT16       1
1960 // #define GxB_NO_TIMES_MIN_INT32       1
1961 // #define GxB_NO_TIMES_MIN_INT64       1
1962 // #define GxB_NO_TIMES_MIN_INT8        1
1963 // #define GxB_NO_TIMES_MIN_UINT16      1
1964 // #define GxB_NO_TIMES_MIN_UINT32      1
1965 // #define GxB_NO_TIMES_MIN_UINT64      1
1966 // #define GxB_NO_TIMES_MIN_UINT8       1
1967 
1968 // #define GxB_NO_TIMES_MAX_FP32        1
1969 // #define GxB_NO_TIMES_MAX_FP64        1
1970 // #define GxB_NO_TIMES_MAX_INT16       1
1971 // #define GxB_NO_TIMES_MAX_INT32       1
1972 // #define GxB_NO_TIMES_MAX_INT64       1
1973 // #define GxB_NO_TIMES_MAX_INT8        1
1974 // #define GxB_NO_TIMES_MAX_UINT16      1
1975 // #define GxB_NO_TIMES_MAX_UINT32      1
1976 // #define GxB_NO_TIMES_MAX_UINT64      1
1977 // #define GxB_NO_TIMES_MAX_UINT8       1
1978 
1979 // #define GxB_NO_TIMES_PLUS_FP32       1
1980 // #define GxB_NO_TIMES_PLUS_FP64       1
1981 // #define GxB_NO_TIMES_PLUS_INT16      1
1982 // #define GxB_NO_TIMES_PLUS_INT32      1
1983 // #define GxB_NO_TIMES_PLUS_INT64      1
1984 // #define GxB_NO_TIMES_PLUS_INT8       1
1985 // #define GxB_NO_TIMES_PLUS_UINT16     1
1986 // #define GxB_NO_TIMES_PLUS_UINT32     1
1987 // #define GxB_NO_TIMES_PLUS_UINT64     1
1988 // #define GxB_NO_TIMES_PLUS_UINT8      1
1989 
1990 // #define GxB_NO_TIMES_TIMES_FP32      1
1991 // #define GxB_NO_TIMES_TIMES_FP64      1
1992 // #define GxB_NO_TIMES_TIMES_INT16     1
1993 // #define GxB_NO_TIMES_TIMES_INT32     1
1994 // #define GxB_NO_TIMES_TIMES_INT64     1
1995 // #define GxB_NO_TIMES_TIMES_INT8      1
1996 // #define GxB_NO_TIMES_TIMES_UINT16    1
1997 // #define GxB_NO_TIMES_TIMES_UINT32    1
1998 // #define GxB_NO_TIMES_TIMES_UINT64    1
1999 // #define GxB_NO_TIMES_TIMES_UINT8     1
2000 
2001 // needed by GrB_reduce to vector
2002 // #define GxB_NO_TIMES_FIRST_FP32      1
2003 // #define GxB_NO_TIMES_FIRST_FP64      1
2004 // #define GxB_NO_TIMES_FIRST_INT16     1
2005 // #define GxB_NO_TIMES_FIRST_INT32     1
2006 // #define GxB_NO_TIMES_FIRST_INT64     1
2007 // #define GxB_NO_TIMES_FIRST_INT8      1
2008 // #define GxB_NO_TIMES_FIRST_UINT16    1
2009 // #define GxB_NO_TIMES_FIRST_UINT32    1
2010 // #define GxB_NO_TIMES_FIRST_UINT64    1
2011 // #define GxB_NO_TIMES_FIRST_UINT8     1
2012 
2013 // needed by GrB_reduce to vector
2014 // #define GxB_NO_TIMES_SECOND_FP32     1
2015 // #define GxB_NO_TIMES_SECOND_FP64     1
2016 // #define GxB_NO_TIMES_SECOND_INT16    1
2017 // #define GxB_NO_TIMES_SECOND_INT32    1
2018 // #define GxB_NO_TIMES_SECOND_INT64    1
2019 // #define GxB_NO_TIMES_SECOND_INT8     1
2020 // #define GxB_NO_TIMES_SECOND_UINT16   1
2021 // #define GxB_NO_TIMES_SECOND_UINT32   1
2022 // #define GxB_NO_TIMES_SECOND_UINT64   1
2023 // #define GxB_NO_TIMES_SECOND_UINT8    1
2024 
2025    #define GxB_NO_TIMES_DIV_FP32        1
2026    #define GxB_NO_TIMES_DIV_FP64        1
2027    #define GxB_NO_TIMES_DIV_INT16       1
2028    #define GxB_NO_TIMES_DIV_INT32       1
2029    #define GxB_NO_TIMES_DIV_INT64       1
2030    #define GxB_NO_TIMES_DIV_INT8        1
2031    #define GxB_NO_TIMES_DIV_UINT16      1
2032    #define GxB_NO_TIMES_DIV_UINT32      1
2033    #define GxB_NO_TIMES_DIV_UINT64      1
2034    #define GxB_NO_TIMES_DIV_UINT8       1
2035 
2036    #define GxB_NO_TIMES_ANY_FP32        1
2037    #define GxB_NO_TIMES_ANY_FP64        1
2038    #define GxB_NO_TIMES_ANY_INT16       1
2039    #define GxB_NO_TIMES_ANY_INT32       1
2040    #define GxB_NO_TIMES_ANY_INT64       1
2041    #define GxB_NO_TIMES_ANY_INT8        1
2042    #define GxB_NO_TIMES_ANY_UINT16      1
2043    #define GxB_NO_TIMES_ANY_UINT32      1
2044    #define GxB_NO_TIMES_ANY_UINT64      1
2045    #define GxB_NO_TIMES_ANY_UINT8       1
2046 
2047    #define GxB_NO_TIMES_ISEQ_FP32       1
2048    #define GxB_NO_TIMES_ISEQ_FP64       1
2049    #define GxB_NO_TIMES_ISEQ_INT16      1
2050    #define GxB_NO_TIMES_ISEQ_INT32      1
2051    #define GxB_NO_TIMES_ISEQ_INT64      1
2052    #define GxB_NO_TIMES_ISEQ_INT8       1
2053    #define GxB_NO_TIMES_ISEQ_UINT16     1
2054    #define GxB_NO_TIMES_ISEQ_UINT32     1
2055    #define GxB_NO_TIMES_ISEQ_UINT64     1
2056    #define GxB_NO_TIMES_ISEQ_UINT8      1
2057    #define GxB_NO_TIMES_ISEQ_FC32       1
2058    #define GxB_NO_TIMES_ISEQ_FC64       1
2059 
2060    #define GxB_NO_TIMES_ISGE_FP32       1
2061    #define GxB_NO_TIMES_ISGE_FP64       1
2062    #define GxB_NO_TIMES_ISGE_INT16      1
2063    #define GxB_NO_TIMES_ISGE_INT32      1
2064    #define GxB_NO_TIMES_ISGE_INT64      1
2065    #define GxB_NO_TIMES_ISGE_INT8       1
2066    #define GxB_NO_TIMES_ISGE_UINT16     1
2067    #define GxB_NO_TIMES_ISGE_UINT32     1
2068    #define GxB_NO_TIMES_ISGE_UINT64     1
2069    #define GxB_NO_TIMES_ISGE_UINT8      1
2070 
2071    #define GxB_NO_TIMES_ISGT_FP32       1
2072    #define GxB_NO_TIMES_ISGT_FP64       1
2073    #define GxB_NO_TIMES_ISGT_INT16      1
2074    #define GxB_NO_TIMES_ISGT_INT32      1
2075    #define GxB_NO_TIMES_ISGT_INT64      1
2076    #define GxB_NO_TIMES_ISGT_INT8       1
2077    #define GxB_NO_TIMES_ISGT_UINT16     1
2078    #define GxB_NO_TIMES_ISGT_UINT32     1
2079    #define GxB_NO_TIMES_ISGT_UINT64     1
2080    #define GxB_NO_TIMES_ISGT_UINT8      1
2081 
2082    #define GxB_NO_TIMES_ISLE_FP32       1
2083    #define GxB_NO_TIMES_ISLE_FP64       1
2084    #define GxB_NO_TIMES_ISLE_INT16      1
2085    #define GxB_NO_TIMES_ISLE_INT32      1
2086    #define GxB_NO_TIMES_ISLE_INT64      1
2087    #define GxB_NO_TIMES_ISLE_INT8       1
2088    #define GxB_NO_TIMES_ISLE_UINT16     1
2089    #define GxB_NO_TIMES_ISLE_UINT32     1
2090    #define GxB_NO_TIMES_ISLE_UINT64     1
2091    #define GxB_NO_TIMES_ISLE_UINT8      1
2092 
2093    #define GxB_NO_TIMES_ISLT_FP32       1
2094    #define GxB_NO_TIMES_ISLT_FP64       1
2095    #define GxB_NO_TIMES_ISLT_INT16      1
2096    #define GxB_NO_TIMES_ISLT_INT32      1
2097    #define GxB_NO_TIMES_ISLT_INT64      1
2098    #define GxB_NO_TIMES_ISLT_INT8       1
2099    #define GxB_NO_TIMES_ISLT_UINT16     1
2100    #define GxB_NO_TIMES_ISLT_UINT32     1
2101    #define GxB_NO_TIMES_ISLT_UINT64     1
2102    #define GxB_NO_TIMES_ISLT_UINT8      1
2103 
2104    #define GxB_NO_TIMES_ISNE_FP32       1
2105    #define GxB_NO_TIMES_ISNE_FP64       1
2106    #define GxB_NO_TIMES_ISNE_INT16      1
2107    #define GxB_NO_TIMES_ISNE_INT32      1
2108    #define GxB_NO_TIMES_ISNE_INT64      1
2109    #define GxB_NO_TIMES_ISNE_INT8       1
2110    #define GxB_NO_TIMES_ISNE_UINT16     1
2111    #define GxB_NO_TIMES_ISNE_UINT32     1
2112    #define GxB_NO_TIMES_ISNE_UINT64     1
2113    #define GxB_NO_TIMES_ISNE_UINT8      1
2114    #define GxB_NO_TIMES_ISNE_FC32       1
2115    #define GxB_NO_TIMES_ISNE_FC64       1
2116 
2117    #define GxB_NO_TIMES_LAND_FP32       1
2118    #define GxB_NO_TIMES_LAND_FP64       1
2119    #define GxB_NO_TIMES_LAND_INT16      1
2120    #define GxB_NO_TIMES_LAND_INT32      1
2121    #define GxB_NO_TIMES_LAND_INT64      1
2122    #define GxB_NO_TIMES_LAND_INT8       1
2123    #define GxB_NO_TIMES_LAND_UINT16     1
2124    #define GxB_NO_TIMES_LAND_UINT32     1
2125    #define GxB_NO_TIMES_LAND_UINT64     1
2126    #define GxB_NO_TIMES_LAND_UINT8      1
2127 
2128    #define GxB_NO_TIMES_LOR_FP32        1
2129    #define GxB_NO_TIMES_LOR_FP64        1
2130    #define GxB_NO_TIMES_LOR_INT16       1
2131    #define GxB_NO_TIMES_LOR_INT32       1
2132    #define GxB_NO_TIMES_LOR_INT64       1
2133    #define GxB_NO_TIMES_LOR_INT8        1
2134    #define GxB_NO_TIMES_LOR_UINT16      1
2135    #define GxB_NO_TIMES_LOR_UINT32      1
2136    #define GxB_NO_TIMES_LOR_UINT64      1
2137    #define GxB_NO_TIMES_LOR_UINT8       1
2138 
2139    #define GxB_NO_TIMES_LXOR_FP32       1
2140    #define GxB_NO_TIMES_LXOR_FP64       1
2141    #define GxB_NO_TIMES_LXOR_INT16      1
2142    #define GxB_NO_TIMES_LXOR_INT32      1
2143    #define GxB_NO_TIMES_LXOR_INT64      1
2144    #define GxB_NO_TIMES_LXOR_INT8       1
2145    #define GxB_NO_TIMES_LXOR_UINT16     1
2146    #define GxB_NO_TIMES_LXOR_UINT32     1
2147    #define GxB_NO_TIMES_LXOR_UINT64     1
2148    #define GxB_NO_TIMES_LXOR_UINT8      1
2149 
2150    #define GxB_NO_TIMES_MINUS_FP32      1
2151    #define GxB_NO_TIMES_MINUS_FP64      1
2152    #define GxB_NO_TIMES_MINUS_INT16     1
2153    #define GxB_NO_TIMES_MINUS_INT32     1
2154    #define GxB_NO_TIMES_MINUS_INT64     1
2155    #define GxB_NO_TIMES_MINUS_INT8      1
2156    #define GxB_NO_TIMES_MINUS_UINT16    1
2157    #define GxB_NO_TIMES_MINUS_UINT32    1
2158    #define GxB_NO_TIMES_MINUS_UINT64    1
2159    #define GxB_NO_TIMES_MINUS_UINT8     1
2160 
2161    #define GxB_NO_TIMES_RDIV_FP32       1
2162    #define GxB_NO_TIMES_RDIV_FP64       1
2163    #define GxB_NO_TIMES_RDIV_INT16      1
2164    #define GxB_NO_TIMES_RDIV_INT32      1
2165    #define GxB_NO_TIMES_RDIV_INT64      1
2166    #define GxB_NO_TIMES_RDIV_INT8       1
2167    #define GxB_NO_TIMES_RDIV_UINT16     1
2168    #define GxB_NO_TIMES_RDIV_UINT32     1
2169    #define GxB_NO_TIMES_RDIV_UINT64     1
2170    #define GxB_NO_TIMES_RDIV_UINT8      1
2171 
2172    #define GxB_NO_TIMES_RMINUS_FP32     1
2173    #define GxB_NO_TIMES_RMINUS_FP64     1
2174    #define GxB_NO_TIMES_RMINUS_INT16    1
2175    #define GxB_NO_TIMES_RMINUS_INT32    1
2176    #define GxB_NO_TIMES_RMINUS_INT64    1
2177    #define GxB_NO_TIMES_RMINUS_INT8     1
2178    #define GxB_NO_TIMES_RMINUS_UINT16   1
2179    #define GxB_NO_TIMES_RMINUS_UINT32   1
2180    #define GxB_NO_TIMES_RMINUS_UINT64   1
2181    #define GxB_NO_TIMES_RMINUS_UINT8    1
2182 
2183 //----------------------------------------
2184 // complex semirings:
2185 //----------------------------------------
2186 
2187 // _FIRST and _SECOND are needed by GrB_reduce to vector
2188 
2189 //  10 semirings for 2 complex types (PLUS and TIMES monoids only):
2190 //
2191 //      monoid  multiply ops
2192 //      PLUS:  TIMES, FIRST, SECOND
2193 //      TIMES: FIRST, SECOND
2194 
2195    #define GxB_NO_PLUS_PLUS_FC32        1
2196    #define GxB_NO_PLUS_PLUS_FC64        1
2197 
2198 // the conventional semiring, used by C=A*B for built-in MATLAB matrices
2199 // #define GxB_NO_PLUS_TIMES_FC32       1
2200 // #define GxB_NO_PLUS_TIMES_FC64       1
2201 
2202 // needed by GrB_reduce to vector, or s = sum (A) in MATLAB interface
2203 // #define GxB_NO_PLUS_FIRST_FC32       1
2204 // #define GxB_NO_PLUS_FIRST_FC64       1
2205 
2206 // needed by GrB_reduce to vector, or s = sum (A) in MATLAB interface
2207 // #define GxB_NO_PLUS_SECOND_FC32      1
2208 // #define GxB_NO_PLUS_SECOND_FC64      1
2209 
2210    #define GxB_NO_PLUS_PAIR_FC32        1
2211    #define GxB_NO_PLUS_PAIR_FC64        1
2212 
2213    #define GxB_NO_PLUS_MINUS_FC32       1
2214    #define GxB_NO_PLUS_MINUS_FC64       1
2215 
2216    #define GxB_NO_PLUS_DIV_FC32         1
2217    #define GxB_NO_PLUS_DIV_FC64         1
2218 
2219    #define GxB_NO_PLUS_RDIV_FC32        1
2220    #define GxB_NO_PLUS_RDIV_FC64        1
2221 
2222    #define GxB_NO_PLUS_RMINUS_FC32      1
2223    #define GxB_NO_PLUS_RMINUS_FC64      1
2224 
2225    #define GxB_NO_TIMES_PLUS_FC32       1
2226    #define GxB_NO_TIMES_PLUS_FC64       1
2227 
2228    #define GxB_NO_TIMES_TIMES_FC32      1
2229    #define GxB_NO_TIMES_TIMES_FC64      1
2230 
2231 // needed by GrB_reduce to vector, or s = prod (A) in MATLAB interface
2232 // #define GxB_NO_TIMES_FIRST_FC32      1
2233 // #define GxB_NO_TIMES_FIRST_FC64      1
2234 
2235 // needed by GrB_reduce to vecto, or s = prod (A) in MATLAB interface
2236 // #define GxB_NO_TIMES_SECOND_FC32     1
2237 // #define GxB_NO_TIMES_SECOND_FC64     1
2238 
2239    #define GxB_NO_TIMES_MINUS_FC32      1
2240    #define GxB_NO_TIMES_MINUS_FC64      1
2241 
2242    #define GxB_NO_TIMES_DIV_FC32        1
2243    #define GxB_NO_TIMES_DIV_FC64        1
2244 
2245    #define GxB_NO_TIMES_RDIV_FC32       1
2246    #define GxB_NO_TIMES_RDIV_FC64       1
2247 
2248    #define GxB_NO_TIMES_RMINUS_FC32     1
2249    #define GxB_NO_TIMES_RMINUS_FC64     1
2250 
2251 //----------------------------------------
2252 // semirings with the ANY monoid
2253 //----------------------------------------
2254 
2255 // None of these are GrB_*, since the ANY monoid is a GxB* extension.
2256 // However, semirings based on the ANY monoid are common: BFS in particular
2257 // uses ANY_FIRST, ANY_SECOND, and ANY_PAIR.
2258 
2259 //  33 semirings enabled with the ANY monoid:
2260 //
2261 //      ANY:   FIRST, SECOND, PAIR (with bool, 10 real types)
2262 
2263 // used in LAGraph: BFS, and GrB_reduce to vector
2264 // #define GxB_NO_ANY_FIRST_BOOL        1
2265 // #define GxB_NO_ANY_FIRST_FP32        1
2266 // #define GxB_NO_ANY_FIRST_FP64        1
2267 // #define GxB_NO_ANY_FIRST_INT16       1
2268 // #define GxB_NO_ANY_FIRST_INT32       1
2269 // #define GxB_NO_ANY_FIRST_INT64       1
2270 // #define GxB_NO_ANY_FIRST_INT8        1
2271 // #define GxB_NO_ANY_FIRST_UINT16      1
2272 // #define GxB_NO_ANY_FIRST_UINT32      1
2273 // #define GxB_NO_ANY_FIRST_UINT64      1
2274 // #define GxB_NO_ANY_FIRST_UINT8       1
2275    #define GxB_NO_ANY_FIRST_FC32        1
2276    #define GxB_NO_ANY_FIRST_FC64        1
2277 
2278 // used in LAGraph: BFS, and GrB_reduce to vector
2279 // #define GxB_NO_ANY_SECOND_BOOL       1
2280 // #define GxB_NO_ANY_SECOND_FP32       1
2281 // #define GxB_NO_ANY_SECOND_FP64       1
2282 // #define GxB_NO_ANY_SECOND_INT16      1
2283 // #define GxB_NO_ANY_SECOND_INT32      1
2284 // #define GxB_NO_ANY_SECOND_INT64      1
2285 // #define GxB_NO_ANY_SECOND_INT8       1
2286 // #define GxB_NO_ANY_SECOND_UINT16     1
2287 // #define GxB_NO_ANY_SECOND_UINT32     1
2288 // #define GxB_NO_ANY_SECOND_UINT64     1
2289 // #define GxB_NO_ANY_SECOND_UINT8      1
2290    #define GxB_NO_ANY_SECOND_FC32       1
2291    #define GxB_NO_ANY_SECOND_FC64       1
2292 
2293 // Not GrB_*, but used in BFS and others.  The only purely symbolic semiring.
2294 // #define GxB_NO_ANY_PAIR_BOOL         1
2295 // #define GxB_NO_ANY_PAIR_FP32         1
2296 // #define GxB_NO_ANY_PAIR_FP64         1
2297 // #define GxB_NO_ANY_PAIR_INT16        1
2298 // #define GxB_NO_ANY_PAIR_INT32        1
2299 // #define GxB_NO_ANY_PAIR_INT64        1
2300 // #define GxB_NO_ANY_PAIR_INT8         1
2301 // #define GxB_NO_ANY_PAIR_UINT16       1
2302 // #define GxB_NO_ANY_PAIR_UINT32       1
2303 // #define GxB_NO_ANY_PAIR_UINT64       1
2304 // #define GxB_NO_ANY_PAIR_UINT8        1
2305    #define GxB_NO_ANY_PAIR_FC32         1
2306    #define GxB_NO_ANY_PAIR_FC64         1
2307 
2308    #define GxB_NO_ANY_DIV_FP32          1
2309    #define GxB_NO_ANY_DIV_FP64          1
2310    #define GxB_NO_ANY_DIV_INT16         1
2311    #define GxB_NO_ANY_DIV_INT32         1
2312    #define GxB_NO_ANY_DIV_INT64         1
2313    #define GxB_NO_ANY_DIV_INT8          1
2314    #define GxB_NO_ANY_DIV_UINT16        1
2315    #define GxB_NO_ANY_DIV_UINT32        1
2316    #define GxB_NO_ANY_DIV_UINT64        1
2317    #define GxB_NO_ANY_DIV_UINT8         1
2318    #define GxB_NO_ANY_DIV_FC32          1
2319    #define GxB_NO_ANY_DIV_FC64          1
2320 
2321    // argmin and argmax use these semirings, but only for row/col scale,
2322    // which is controlled by the same as a binop, not a semiring.
2323    #define GxB_NO_ANY_EQ_BOOL           1
2324    #define GxB_NO_ANY_EQ_FP32           1
2325    #define GxB_NO_ANY_EQ_FP64           1
2326    #define GxB_NO_ANY_EQ_INT16          1
2327    #define GxB_NO_ANY_EQ_INT32          1
2328    #define GxB_NO_ANY_EQ_INT64          1
2329    #define GxB_NO_ANY_EQ_INT8           1
2330    #define GxB_NO_ANY_EQ_UINT16         1
2331    #define GxB_NO_ANY_EQ_UINT32         1
2332    #define GxB_NO_ANY_EQ_UINT64         1
2333    #define GxB_NO_ANY_EQ_UINT8          1
2334    #define GxB_NO_ANY_EQ_FC32           1
2335    #define GxB_NO_ANY_EQ_FC64           1
2336 
2337    #define GxB_NO_ANY_GE_BOOL           1
2338    #define GxB_NO_ANY_GE_FP32           1
2339    #define GxB_NO_ANY_GE_FP64           1
2340    #define GxB_NO_ANY_GE_INT16          1
2341    #define GxB_NO_ANY_GE_INT32          1
2342    #define GxB_NO_ANY_GE_INT64          1
2343    #define GxB_NO_ANY_GE_INT8           1
2344    #define GxB_NO_ANY_GE_UINT16         1
2345    #define GxB_NO_ANY_GE_UINT32         1
2346    #define GxB_NO_ANY_GE_UINT64         1
2347    #define GxB_NO_ANY_GE_UINT8          1
2348 
2349    #define GxB_NO_ANY_GT_BOOL           1
2350    #define GxB_NO_ANY_GT_FP32           1
2351    #define GxB_NO_ANY_GT_FP64           1
2352    #define GxB_NO_ANY_GT_INT16          1
2353    #define GxB_NO_ANY_GT_INT32          1
2354    #define GxB_NO_ANY_GT_INT64          1
2355    #define GxB_NO_ANY_GT_INT8           1
2356    #define GxB_NO_ANY_GT_UINT16         1
2357    #define GxB_NO_ANY_GT_UINT32         1
2358    #define GxB_NO_ANY_GT_UINT64         1
2359    #define GxB_NO_ANY_GT_UINT8          1
2360 
2361    #define GxB_NO_ANY_ISEQ_FP32         1
2362    #define GxB_NO_ANY_ISEQ_FP64         1
2363    #define GxB_NO_ANY_ISEQ_INT16        1
2364    #define GxB_NO_ANY_ISEQ_INT32        1
2365    #define GxB_NO_ANY_ISEQ_INT64        1
2366    #define GxB_NO_ANY_ISEQ_INT8         1
2367    #define GxB_NO_ANY_ISEQ_UINT16       1
2368    #define GxB_NO_ANY_ISEQ_UINT32       1
2369    #define GxB_NO_ANY_ISEQ_UINT64       1
2370    #define GxB_NO_ANY_ISEQ_UINT8        1
2371    #define GxB_NO_ANY_ISEQ_FC32         1
2372    #define GxB_NO_ANY_ISEQ_FC64         1
2373 
2374    #define GxB_NO_ANY_ISGE_FP32         1
2375    #define GxB_NO_ANY_ISGE_FP64         1
2376    #define GxB_NO_ANY_ISGE_INT16        1
2377    #define GxB_NO_ANY_ISGE_INT32        1
2378    #define GxB_NO_ANY_ISGE_INT64        1
2379    #define GxB_NO_ANY_ISGE_INT8         1
2380    #define GxB_NO_ANY_ISGE_UINT16       1
2381    #define GxB_NO_ANY_ISGE_UINT32       1
2382    #define GxB_NO_ANY_ISGE_UINT64       1
2383    #define GxB_NO_ANY_ISGE_UINT8        1
2384 
2385    #define GxB_NO_ANY_ISGT_FP32         1
2386    #define GxB_NO_ANY_ISGT_FP64         1
2387    #define GxB_NO_ANY_ISGT_INT16        1
2388    #define GxB_NO_ANY_ISGT_INT32        1
2389    #define GxB_NO_ANY_ISGT_INT64        1
2390    #define GxB_NO_ANY_ISGT_INT8         1
2391    #define GxB_NO_ANY_ISGT_UINT16       1
2392    #define GxB_NO_ANY_ISGT_UINT32       1
2393    #define GxB_NO_ANY_ISGT_UINT64       1
2394    #define GxB_NO_ANY_ISGT_UINT8        1
2395 
2396    #define GxB_NO_ANY_ISLE_FP32         1
2397    #define GxB_NO_ANY_ISLE_FP64         1
2398    #define GxB_NO_ANY_ISLE_INT16        1
2399    #define GxB_NO_ANY_ISLE_INT32        1
2400    #define GxB_NO_ANY_ISLE_INT64        1
2401    #define GxB_NO_ANY_ISLE_INT8         1
2402    #define GxB_NO_ANY_ISLE_UINT16       1
2403    #define GxB_NO_ANY_ISLE_UINT32       1
2404    #define GxB_NO_ANY_ISLE_UINT64       1
2405    #define GxB_NO_ANY_ISLE_UINT8        1
2406 
2407    #define GxB_NO_ANY_ISLT_FP32         1
2408    #define GxB_NO_ANY_ISLT_FP64         1
2409    #define GxB_NO_ANY_ISLT_INT16        1
2410    #define GxB_NO_ANY_ISLT_INT32        1
2411    #define GxB_NO_ANY_ISLT_INT64        1
2412    #define GxB_NO_ANY_ISLT_INT8         1
2413    #define GxB_NO_ANY_ISLT_UINT16       1
2414    #define GxB_NO_ANY_ISLT_UINT32       1
2415    #define GxB_NO_ANY_ISLT_UINT64       1
2416    #define GxB_NO_ANY_ISLT_UINT8        1
2417 
2418    #define GxB_NO_ANY_ISNE_FP32         1
2419    #define GxB_NO_ANY_ISNE_FP64         1
2420    #define GxB_NO_ANY_ISNE_INT16        1
2421    #define GxB_NO_ANY_ISNE_INT32        1
2422    #define GxB_NO_ANY_ISNE_INT64        1
2423    #define GxB_NO_ANY_ISNE_INT8         1
2424    #define GxB_NO_ANY_ISNE_UINT16       1
2425    #define GxB_NO_ANY_ISNE_UINT32       1
2426    #define GxB_NO_ANY_ISNE_UINT64       1
2427    #define GxB_NO_ANY_ISNE_UINT8        1
2428    #define GxB_NO_ANY_ISNE_FC32         1
2429    #define GxB_NO_ANY_ISNE_FC64         1
2430 
2431    #define GxB_NO_ANY_LAND_BOOL         1
2432    #define GxB_NO_ANY_LAND_FP32         1
2433    #define GxB_NO_ANY_LAND_FP64         1
2434    #define GxB_NO_ANY_LAND_INT16        1
2435    #define GxB_NO_ANY_LAND_INT32        1
2436    #define GxB_NO_ANY_LAND_INT64        1
2437    #define GxB_NO_ANY_LAND_INT8         1
2438    #define GxB_NO_ANY_LAND_UINT16       1
2439    #define GxB_NO_ANY_LAND_UINT32       1
2440    #define GxB_NO_ANY_LAND_UINT64       1
2441    #define GxB_NO_ANY_LAND_UINT8        1
2442 
2443    #define GxB_NO_ANY_LE_BOOL           1
2444    #define GxB_NO_ANY_LE_FP32           1
2445    #define GxB_NO_ANY_LE_FP64           1
2446    #define GxB_NO_ANY_LE_INT16          1
2447    #define GxB_NO_ANY_LE_INT32          1
2448    #define GxB_NO_ANY_LE_INT64          1
2449    #define GxB_NO_ANY_LE_INT8           1
2450    #define GxB_NO_ANY_LE_UINT16         1
2451    #define GxB_NO_ANY_LE_UINT32         1
2452    #define GxB_NO_ANY_LE_UINT64         1
2453    #define GxB_NO_ANY_LE_UINT8          1
2454 
2455    #define GxB_NO_ANY_LOR_BOOL          1
2456    #define GxB_NO_ANY_LOR_FP32          1
2457    #define GxB_NO_ANY_LOR_FP64          1
2458    #define GxB_NO_ANY_LOR_INT16         1
2459    #define GxB_NO_ANY_LOR_INT32         1
2460    #define GxB_NO_ANY_LOR_INT64         1
2461    #define GxB_NO_ANY_LOR_INT8          1
2462    #define GxB_NO_ANY_LOR_UINT16        1
2463    #define GxB_NO_ANY_LOR_UINT32        1
2464    #define GxB_NO_ANY_LOR_UINT64        1
2465    #define GxB_NO_ANY_LOR_UINT8         1
2466 
2467    #define GxB_NO_ANY_LT_BOOL           1
2468    #define GxB_NO_ANY_LT_FP32           1
2469    #define GxB_NO_ANY_LT_FP64           1
2470    #define GxB_NO_ANY_LT_INT16          1
2471    #define GxB_NO_ANY_LT_INT32          1
2472    #define GxB_NO_ANY_LT_INT64          1
2473    #define GxB_NO_ANY_LT_INT8           1
2474    #define GxB_NO_ANY_LT_UINT16         1
2475    #define GxB_NO_ANY_LT_UINT32         1
2476    #define GxB_NO_ANY_LT_UINT64         1
2477    #define GxB_NO_ANY_LT_UINT8          1
2478 
2479    #define GxB_NO_ANY_LXOR_BOOL         1
2480    #define GxB_NO_ANY_LXOR_FP32         1
2481    #define GxB_NO_ANY_LXOR_FP64         1
2482    #define GxB_NO_ANY_LXOR_INT16        1
2483    #define GxB_NO_ANY_LXOR_INT32        1
2484    #define GxB_NO_ANY_LXOR_INT64        1
2485    #define GxB_NO_ANY_LXOR_INT8         1
2486    #define GxB_NO_ANY_LXOR_UINT16       1
2487    #define GxB_NO_ANY_LXOR_UINT32       1
2488    #define GxB_NO_ANY_LXOR_UINT64       1
2489    #define GxB_NO_ANY_LXOR_UINT8        1
2490 
2491    #define GxB_NO_ANY_MAX_FP32          1
2492    #define GxB_NO_ANY_MAX_FP64          1
2493    #define GxB_NO_ANY_MAX_INT16         1
2494    #define GxB_NO_ANY_MAX_INT32         1
2495    #define GxB_NO_ANY_MAX_INT64         1
2496    #define GxB_NO_ANY_MAX_INT8          1
2497    #define GxB_NO_ANY_MAX_UINT16        1
2498    #define GxB_NO_ANY_MAX_UINT32        1
2499    #define GxB_NO_ANY_MAX_UINT64        1
2500    #define GxB_NO_ANY_MAX_UINT8         1
2501 
2502    #define GxB_NO_ANY_MIN_FP32          1
2503    #define GxB_NO_ANY_MIN_FP64          1
2504    #define GxB_NO_ANY_MIN_INT16         1
2505    #define GxB_NO_ANY_MIN_INT32         1
2506    #define GxB_NO_ANY_MIN_INT64         1
2507    #define GxB_NO_ANY_MIN_INT8          1
2508    #define GxB_NO_ANY_MIN_UINT16        1
2509    #define GxB_NO_ANY_MIN_UINT32        1
2510    #define GxB_NO_ANY_MIN_UINT64        1
2511    #define GxB_NO_ANY_MIN_UINT8         1
2512 
2513    #define GxB_NO_ANY_MINUS_FP32        1
2514    #define GxB_NO_ANY_MINUS_FP64        1
2515    #define GxB_NO_ANY_MINUS_INT16       1
2516    #define GxB_NO_ANY_MINUS_INT32       1
2517    #define GxB_NO_ANY_MINUS_INT64       1
2518    #define GxB_NO_ANY_MINUS_INT8        1
2519    #define GxB_NO_ANY_MINUS_UINT16      1
2520    #define GxB_NO_ANY_MINUS_UINT32      1
2521    #define GxB_NO_ANY_MINUS_UINT64      1
2522    #define GxB_NO_ANY_MINUS_UINT8       1
2523    #define GxB_NO_ANY_MINUS_FC32        1
2524    #define GxB_NO_ANY_MINUS_FC64        1
2525 
2526    #define GxB_NO_ANY_NE_FP32           1
2527    #define GxB_NO_ANY_NE_FP64           1
2528    #define GxB_NO_ANY_NE_INT16          1
2529    #define GxB_NO_ANY_NE_INT32          1
2530    #define GxB_NO_ANY_NE_INT64          1
2531    #define GxB_NO_ANY_NE_INT8           1
2532    #define GxB_NO_ANY_NE_UINT16         1
2533    #define GxB_NO_ANY_NE_UINT32         1
2534    #define GxB_NO_ANY_NE_UINT64         1
2535    #define GxB_NO_ANY_NE_UINT8          1
2536    #define GxB_NO_ANY_NE_FC32           1
2537    #define GxB_NO_ANY_NE_FC64           1
2538 
2539    #define GxB_NO_ANY_PLUS_FP32         1
2540    #define GxB_NO_ANY_PLUS_FP64         1
2541    #define GxB_NO_ANY_PLUS_INT16        1
2542    #define GxB_NO_ANY_PLUS_INT32        1
2543    #define GxB_NO_ANY_PLUS_INT64        1
2544    #define GxB_NO_ANY_PLUS_INT8         1
2545    #define GxB_NO_ANY_PLUS_UINT16       1
2546    #define GxB_NO_ANY_PLUS_UINT32       1
2547    #define GxB_NO_ANY_PLUS_UINT64       1
2548    #define GxB_NO_ANY_PLUS_UINT8        1
2549    #define GxB_NO_ANY_PLUS_FC32         1
2550    #define GxB_NO_ANY_PLUS_FC64         1
2551 
2552    #define GxB_NO_ANY_RDIV_FP32         1
2553    #define GxB_NO_ANY_RDIV_FP64         1
2554    #define GxB_NO_ANY_RDIV_INT16        1
2555    #define GxB_NO_ANY_RDIV_INT32        1
2556    #define GxB_NO_ANY_RDIV_INT64        1
2557    #define GxB_NO_ANY_RDIV_INT8         1
2558    #define GxB_NO_ANY_RDIV_UINT16       1
2559    #define GxB_NO_ANY_RDIV_UINT32       1
2560    #define GxB_NO_ANY_RDIV_UINT64       1
2561    #define GxB_NO_ANY_RDIV_UINT8        1
2562    #define GxB_NO_ANY_RDIV_FC32         1
2563    #define GxB_NO_ANY_RDIV_FC64         1
2564 
2565    #define GxB_NO_ANY_RMINUS_FP32       1
2566    #define GxB_NO_ANY_RMINUS_FP64       1
2567    #define GxB_NO_ANY_RMINUS_INT16      1
2568    #define GxB_NO_ANY_RMINUS_INT32      1
2569    #define GxB_NO_ANY_RMINUS_INT64      1
2570    #define GxB_NO_ANY_RMINUS_INT8       1
2571    #define GxB_NO_ANY_RMINUS_UINT16     1
2572    #define GxB_NO_ANY_RMINUS_UINT32     1
2573    #define GxB_NO_ANY_RMINUS_UINT64     1
2574    #define GxB_NO_ANY_RMINUS_UINT8      1
2575    #define GxB_NO_ANY_RMINUS_FC32       1
2576    #define GxB_NO_ANY_RMINUS_FC64       1
2577 
2578    #define GxB_NO_ANY_TIMES_FP32        1
2579    #define GxB_NO_ANY_TIMES_FP64        1
2580    #define GxB_NO_ANY_TIMES_INT16       1
2581    #define GxB_NO_ANY_TIMES_INT32       1
2582    #define GxB_NO_ANY_TIMES_INT64       1
2583    #define GxB_NO_ANY_TIMES_INT8        1
2584    #define GxB_NO_ANY_TIMES_UINT16      1
2585    #define GxB_NO_ANY_TIMES_UINT32      1
2586    #define GxB_NO_ANY_TIMES_UINT64      1
2587    #define GxB_NO_ANY_TIMES_UINT8       1
2588    #define GxB_NO_ANY_TIMES_FC32        1
2589    #define GxB_NO_ANY_TIMES_FC64        1
2590 
2591 //----------------------------------------
2592 // bitwise semirings:
2593 //----------------------------------------
2594 
2595 //  64 bitwise semirings: for 4 unsigned integer types, all enabled below:
2596 //
2597 //      (BOR, BAND, BXOR, BXNOR) x (BOR, BAND, BXOR, BXNOR)
2598 
2599 // #define GxB_NO_BOR_BOR_UINT8         1
2600 // #define GxB_NO_BOR_BOR_UINT16        1
2601 // #define GxB_NO_BOR_BOR_UINT32        1
2602 // #define GxB_NO_BOR_BOR_UINT64        1
2603 
2604 // #define GxB_NO_BOR_BAND_UINT8        1
2605 // #define GxB_NO_BOR_BAND_UINT16       1
2606 // #define GxB_NO_BOR_BAND_UINT32       1
2607 // #define GxB_NO_BOR_BAND_UINT64       1
2608 
2609 // #define GxB_NO_BOR_BXOR_UINT8        1
2610 // #define GxB_NO_BOR_BXOR_UINT16       1
2611 // #define GxB_NO_BOR_BXOR_UINT32       1
2612 // #define GxB_NO_BOR_BXOR_UINT64       1
2613 
2614 // #define GxB_NO_BOR_BXNOR_UINT8       1
2615 // #define GxB_NO_BOR_BXNOR_UINT16      1
2616 // #define GxB_NO_BOR_BXNOR_UINT32      1
2617 // #define GxB_NO_BOR_BXNOR_UINT64      1
2618 
2619 // #define GxB_NO_BAND_BOR_UINT8        1
2620 // #define GxB_NO_BAND_BOR_UINT16       1
2621 // #define GxB_NO_BAND_BOR_UINT32       1
2622 // #define GxB_NO_BAND_BOR_UINT64       1
2623 
2624 // #define GxB_NO_BAND_BAND_UINT8       1
2625 // #define GxB_NO_BAND_BAND_UINT16      1
2626 // #define GxB_NO_BAND_BAND_UINT32      1
2627 // #define GxB_NO_BAND_BAND_UINT64      1
2628 
2629 // #define GxB_NO_BAND_BXOR_UINT8       1
2630 // #define GxB_NO_BAND_BXOR_UINT16      1
2631 // #define GxB_NO_BAND_BXOR_UINT32      1
2632 // #define GxB_NO_BAND_BXOR_UINT64      1
2633 
2634 // #define GxB_NO_BAND_BXNOR_UINT8      1
2635 // #define GxB_NO_BAND_BXNOR_UINT16     1
2636 // #define GxB_NO_BAND_BXNOR_UINT32     1
2637 // #define GxB_NO_BAND_BXNOR_UINT64     1
2638 
2639 // #define GxB_NO_BXOR_BOR_UINT8        1
2640 // #define GxB_NO_BXOR_BOR_UINT16       1
2641 // #define GxB_NO_BXOR_BOR_UINT32       1
2642 // #define GxB_NO_BXOR_BOR_UINT64       1
2643 
2644 // #define GxB_NO_BXOR_BAND_UINT8       1
2645 // #define GxB_NO_BXOR_BAND_UINT16      1
2646 // #define GxB_NO_BXOR_BAND_UINT32      1
2647 // #define GxB_NO_BXOR_BAND_UINT64      1
2648 
2649 // #define GxB_NO_BXOR_BXOR_UINT8       1
2650 // #define GxB_NO_BXOR_BXOR_UINT16      1
2651 // #define GxB_NO_BXOR_BXOR_UINT32      1
2652 // #define GxB_NO_BXOR_BXOR_UINT64      1
2653 
2654 // #define GxB_NO_BXOR_BXNOR_UINT8      1
2655 // #define GxB_NO_BXOR_BXNOR_UINT16     1
2656 // #define GxB_NO_BXOR_BXNOR_UINT32     1
2657 // #define GxB_NO_BXOR_BXNOR_UINT64     1
2658 
2659 // #define GxB_NO_BXNOR_BOR_UINT8       1
2660 // #define GxB_NO_BXNOR_BOR_UINT16      1
2661 // #define GxB_NO_BXNOR_BOR_UINT32      1
2662 // #define GxB_NO_BXNOR_BOR_UINT64      1
2663 
2664 // #define GxB_NO_BXNOR_BAND_UINT8      1
2665 // #define GxB_NO_BXNOR_BAND_UINT16     1
2666 // #define GxB_NO_BXNOR_BAND_UINT32     1
2667 // #define GxB_NO_BXNOR_BAND_UINT64     1
2668 
2669 // #define GxB_NO_BXNOR_BXOR_UINT8      1
2670 // #define GxB_NO_BXNOR_BXOR_UINT16     1
2671 // #define GxB_NO_BXNOR_BXOR_UINT32     1
2672 // #define GxB_NO_BXNOR_BXOR_UINT64     1
2673 
2674 // #define GxB_NO_BXNOR_BXNOR_UINT8     1
2675 // #define GxB_NO_BXNOR_BXNOR_UINT16    1
2676 // #define GxB_NO_BXNOR_BXNOR_UINT32    1
2677 // #define GxB_NO_BXNOR_BXNOR_UINT64    1
2678 
2679 //----------------------------------------
2680 // semirings with positional multiplicative operators:
2681 //----------------------------------------
2682 
2683 // No builtin GrB_* semirings use positional multiplicative operators.
2684 // BFS_parent uses ANY_SECONDI.  1-based semirings are important for 1-based
2685 // framewarks such as MATLAB.  In a semiring, the multiplicative operator
2686 // SECONDI is the same as FIRSTJ.
2687 
2688 //  36 positional semirings:
2689 //
2690 //      monoids: (MIN, MAX, ANY) x
2691 //      mult:    (FIRSTI, FIRSTI1, FIRSTJ, FIRSTJ1, SECONDJ, SECONDJ1) x
2692 //      types:   (int32, int64)
2693 
2694 // #define GxB_NO_MIN_FIRSTI_INT32      1
2695 // #define GxB_NO_MIN_FIRSTI_INT64      1
2696 // #define GxB_NO_MIN_FIRSTI1_INT32     1
2697 // #define GxB_NO_MIN_FIRSTI1_INT64     1
2698 // #define GxB_NO_MIN_FIRSTJ_INT32      1
2699 // #define GxB_NO_MIN_FIRSTJ_INT64      1
2700 // #define GxB_NO_MIN_FIRSTJ1_INT32     1
2701 // #define GxB_NO_MIN_FIRSTJ1_INT64     1
2702 // #define GxB_NO_MIN_SECONDJ_INT32     1
2703 // #define GxB_NO_MIN_SECONDJ_INT64     1
2704 // #define GxB_NO_MIN_SECONDJ1_INT32    1
2705 // #define GxB_NO_MIN_SECONDJ1_INT64    1
2706 
2707 // #define GxB_NO_MAX_FIRSTI_INT32      1
2708 // #define GxB_NO_MAX_FIRSTI_INT64      1
2709 // #define GxB_NO_MAX_FIRSTI1_INT32     1
2710 // #define GxB_NO_MAX_FIRSTI1_INT64     1
2711 // #define GxB_NO_MAX_FIRSTJ_INT32      1
2712 // #define GxB_NO_MAX_FIRSTJ_INT64      1
2713 // #define GxB_NO_MAX_FIRSTJ1_INT32     1
2714 // #define GxB_NO_MAX_FIRSTJ1_INT64     1
2715 // #define GxB_NO_MAX_SECONDJ_INT32     1
2716 // #define GxB_NO_MAX_SECONDJ_INT64     1
2717 // #define GxB_NO_MAX_SECONDJ1_INT32    1
2718 // #define GxB_NO_MAX_SECONDJ1_INT64    1
2719 
2720 // #define GxB_NO_ANY_FIRSTI_INT32      1
2721 // #define GxB_NO_ANY_FIRSTI_INT64      1
2722 // #define GxB_NO_ANY_FIRSTI1_INT32     1
2723 // #define GxB_NO_ANY_FIRSTI1_INT64     1
2724 // #define GxB_NO_ANY_FIRSTJ_INT32      1
2725 // #define GxB_NO_ANY_FIRSTJ_INT64      1
2726 // #define GxB_NO_ANY_FIRSTJ1_INT32     1
2727 // #define GxB_NO_ANY_FIRSTJ1_INT64     1
2728 // #define GxB_NO_ANY_SECONDJ_INT32     1
2729 // #define GxB_NO_ANY_SECONDJ_INT64     1
2730 // #define GxB_NO_ANY_SECONDJ1_INT32    1
2731 // #define GxB_NO_ANY_SECONDJ1_INT64    1
2732 
2733    #define GxB_NO_PLUS_FIRSTI_INT32     1
2734    #define GxB_NO_PLUS_FIRSTI_INT64     1
2735    #define GxB_NO_PLUS_FIRSTI1_INT32    1
2736    #define GxB_NO_PLUS_FIRSTI1_INT64    1
2737    #define GxB_NO_PLUS_FIRSTJ_INT32     1
2738    #define GxB_NO_PLUS_FIRSTJ_INT64     1
2739    #define GxB_NO_PLUS_FIRSTJ1_INT32    1
2740    #define GxB_NO_PLUS_FIRSTJ1_INT64    1
2741    #define GxB_NO_PLUS_SECONDJ_INT32    1
2742    #define GxB_NO_PLUS_SECONDJ_INT64    1
2743    #define GxB_NO_PLUS_SECONDJ1_INT32   1
2744    #define GxB_NO_PLUS_SECONDJ1_INT64   1
2745 
2746    #define GxB_NO_TIMES_FIRSTI_INT32    1
2747    #define GxB_NO_TIMES_FIRSTI_INT64    1
2748    #define GxB_NO_TIMES_FIRSTI1_INT32   1
2749    #define GxB_NO_TIMES_FIRSTI1_INT64   1
2750    #define GxB_NO_TIMES_FIRSTJ_INT32    1
2751    #define GxB_NO_TIMES_FIRSTJ_INT64    1
2752    #define GxB_NO_TIMES_FIRSTJ1_INT32   1
2753    #define GxB_NO_TIMES_FIRSTJ1_INT64   1
2754    #define GxB_NO_TIMES_SECONDJ_INT32   1
2755    #define GxB_NO_TIMES_SECONDJ_INT64   1
2756    #define GxB_NO_TIMES_SECONDJ1_INT32  1
2757    #define GxB_NO_TIMES_SECONDJ1_INT64  1
2758 
2759