1 //------------------------------------------------------------------------------
2 // GB_mx_semiring: get a built-in semiring
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 #include "GB_mex.h"
11 #include "GB_binop.h"
12
13 // See GraphBLAS/GraphBLAS/@GrB/private/util/gb_semiring.c for a description
14
GB_mx_semiring(const GrB_Monoid add_monoid,const GrB_BinaryOp mult)15 GrB_Semiring GB_mx_semiring // semiring, or NULL if error
16 (
17 const GrB_Monoid add_monoid, // input monoid
18 const GrB_BinaryOp mult // input multiply operator
19 )
20 {
21
22 //--------------------------------------------------------------------------
23 // check inputs
24 //--------------------------------------------------------------------------
25
26 if (Complex != GxB_FC64)
27 {
28 // user-defined semiring
29 if (add_monoid == Complex_plus_monoid && mult == Complex_times)
30 {
31 return (Complex_plus_times) ;
32 }
33 }
34
35 GrB_BinaryOp add = add_monoid->op ; // add operator
36 GB_Opcode add_opcode = add->opcode ; // add opcode
37 GB_Opcode mult_opcode = mult->opcode ; // multiply opcode
38
39 // add is a monoid
40 ASSERT (add->xtype == add->ztype && add->ytype == add->ztype) ;
41
42 // in a semiring, the ztypes of add and mult are always the same:
43 ASSERT (add->ztype == mult->ztype) ;
44
45 // The conditions above are true for any semiring and any A and B, whether
46 // or not this function handles the semiring as hard-coded. Now return for
47 // cases this function does not handle.
48
49 if (add_opcode >= GB_USER_opcode || mult_opcode >= GB_USER_opcode)
50 {
51 return (NULL) ;
52 }
53
54 //--------------------------------------------------------------------------
55 // rename redundant Boolean multiply operators
56 //--------------------------------------------------------------------------
57
58 GB_Type_code xcode = mult->xtype->code ;
59 GB_Type_code zcode = mult->ztype->code ;
60
61 ASSERT (xcode < GB_UDT_code) ;
62 ASSERT (zcode < GB_UDT_code) ;
63
64 if (xcode == GB_BOOL_code)
65 {
66 // z = mult(x,y) where both x and y are Boolean.
67 // DIV becomes FIRST
68 // RDIV becomes SECOND
69 // MIN and TIMES become LAND
70 // MAX and PLUS become LOR
71 // NE, ISNE, MINUS, and RMINUS become LXOR
72 // ISEQ becomes EQ
73 // ISGT becomes GT
74 // ISLT becomes LT
75 // ISGE becomes GE
76 // ISLE becomes LE
77 mult_opcode = GB_boolean_rename (mult_opcode) ;
78 }
79
80 if (zcode == GB_BOOL_code)
81 {
82 // Only the LAND, LOR, LXOR, and EQ monoids remain if z is
83 // Boolean. MIN, MAX, PLUS, and TIMES are renamed.
84 add_opcode = GB_boolean_rename (add_opcode) ;
85 }
86
87 //--------------------------------------------------------------------------
88 // launch the switch factory
89 //--------------------------------------------------------------------------
90
91 if (zcode == GB_FC32_code)
92 {
93
94 //----------------------------------------------------------------------
95 // 27 single complex semirings
96 //----------------------------------------------------------------------
97
98 switch (mult_opcode)
99 {
100
101 case GB_FIRST_opcode :
102
103 switch (add_opcode)
104 {
105 case GB_PLUS_opcode : return (GxB_PLUS_FIRST_FC32 ) ;
106 case GB_TIMES_opcode : return (GxB_TIMES_FIRST_FC32) ;
107 case GB_ANY_opcode : return (GxB_ANY_FIRST_FC32 ) ;
108 default : ;
109 }
110 break ;
111
112 case GB_SECOND_opcode :
113
114 switch (add_opcode)
115 {
116 case GB_PLUS_opcode : return (GxB_PLUS_SECOND_FC32 ) ;
117 case GB_TIMES_opcode : return (GxB_TIMES_SECOND_FC32) ;
118 case GB_ANY_opcode : return (GxB_ANY_SECOND_FC32 ) ;
119 default : ;
120 }
121 break ;
122
123 case GB_PAIR_opcode :
124
125 switch (add_opcode)
126 {
127 case GB_PLUS_opcode : return (GxB_PLUS_PAIR_FC32 ) ;
128 case GB_TIMES_opcode : return (GxB_TIMES_PAIR_FC32) ;
129 case GB_ANY_opcode : return (GxB_ANY_PAIR_FC32 ) ;
130 default : ;
131 }
132 break ;
133
134 case GB_PLUS_opcode :
135
136 switch (add_opcode)
137 {
138 case GB_PLUS_opcode : return (GxB_PLUS_PLUS_FC32 ) ;
139 case GB_TIMES_opcode : return (GxB_TIMES_PLUS_FC32) ;
140 case GB_ANY_opcode : return (GxB_ANY_PLUS_FC32 ) ;
141 default : ;
142 }
143 break ;
144
145 case GB_MINUS_opcode :
146
147 switch (add_opcode)
148 {
149 case GB_PLUS_opcode : return (GxB_PLUS_MINUS_FC32 ) ;
150 case GB_TIMES_opcode : return (GxB_TIMES_MINUS_FC32) ;
151 case GB_ANY_opcode : return (GxB_ANY_MINUS_FC32 ) ;
152 default : ;
153 }
154 break ;
155
156 case GB_TIMES_opcode :
157
158 switch (add_opcode)
159 {
160 case GB_PLUS_opcode : return (GxB_PLUS_TIMES_FC32 ) ;
161 case GB_TIMES_opcode : return (GxB_TIMES_TIMES_FC32) ;
162 case GB_ANY_opcode : return (GxB_ANY_TIMES_FC32 ) ;
163 default : ;
164 }
165 break ;
166
167 case GB_DIV_opcode :
168
169 switch (add_opcode)
170 {
171 case GB_PLUS_opcode : return (GxB_PLUS_DIV_FC32 ) ;
172 case GB_TIMES_opcode : return (GxB_TIMES_DIV_FC32) ;
173 case GB_ANY_opcode : return (GxB_ANY_DIV_FC32 ) ;
174 default : ;
175 }
176 break ;
177
178 case GB_RDIV_opcode :
179
180 switch (add_opcode)
181 {
182 case GB_PLUS_opcode : return (GxB_PLUS_RDIV_FC32 ) ;
183 case GB_TIMES_opcode : return (GxB_TIMES_RDIV_FC32) ;
184 case GB_ANY_opcode : return (GxB_ANY_RDIV_FC32 ) ;
185 default : ;
186 }
187 break ;
188
189 case GB_RMINUS_opcode :
190
191 switch (add_opcode)
192 {
193 case GB_PLUS_opcode : return (GxB_PLUS_RMINUS_FC32 ) ;
194 case GB_TIMES_opcode : return (GxB_TIMES_RMINUS_FC32) ;
195 case GB_ANY_opcode : return (GxB_ANY_RMINUS_FC32 ) ;
196 default : ;
197 }
198 break ;
199 default : ;
200 }
201
202 }
203 else if (zcode == GB_FC64_code)
204 {
205
206 //----------------------------------------------------------------------
207 // 27 double complex semirings
208 //----------------------------------------------------------------------
209
210 switch (mult_opcode)
211 {
212
213 case GB_FIRST_opcode :
214
215 switch (add_opcode)
216 {
217 case GB_PLUS_opcode : return (GxB_PLUS_FIRST_FC64 ) ;
218 case GB_TIMES_opcode : return (GxB_TIMES_FIRST_FC64) ;
219 case GB_ANY_opcode : return (GxB_ANY_FIRST_FC64 ) ;
220 default : ;
221 }
222 break ;
223
224 case GB_SECOND_opcode :
225
226 switch (add_opcode)
227 {
228 case GB_PLUS_opcode : return (GxB_PLUS_SECOND_FC64 ) ;
229 case GB_TIMES_opcode : return (GxB_TIMES_SECOND_FC64) ;
230 case GB_ANY_opcode : return (GxB_ANY_SECOND_FC64 ) ;
231 default : ;
232 }
233 break ;
234
235 case GB_PAIR_opcode :
236
237 switch (add_opcode)
238 {
239 case GB_PLUS_opcode : return (GxB_PLUS_PAIR_FC64 ) ;
240 case GB_TIMES_opcode : return (GxB_TIMES_PAIR_FC64) ;
241 case GB_ANY_opcode : return (GxB_ANY_PAIR_FC64 ) ;
242 default : ;
243 }
244 break ;
245
246 case GB_PLUS_opcode :
247
248 switch (add_opcode)
249 {
250 case GB_PLUS_opcode : return (GxB_PLUS_PLUS_FC64 ) ;
251 case GB_TIMES_opcode : return (GxB_TIMES_PLUS_FC64) ;
252 case GB_ANY_opcode : return (GxB_ANY_PLUS_FC64 ) ;
253 default : ;
254 }
255 break ;
256
257 case GB_MINUS_opcode :
258
259 switch (add_opcode)
260 {
261 case GB_PLUS_opcode : return (GxB_PLUS_MINUS_FC64 ) ;
262 case GB_TIMES_opcode : return (GxB_TIMES_MINUS_FC64) ;
263 case GB_ANY_opcode : return (GxB_ANY_MINUS_FC64 ) ;
264 default : ;
265 }
266 break ;
267
268 case GB_TIMES_opcode :
269
270 switch (add_opcode)
271 {
272 case GB_PLUS_opcode : return (GxB_PLUS_TIMES_FC64 ) ;
273 case GB_TIMES_opcode : return (GxB_TIMES_TIMES_FC64) ;
274 case GB_ANY_opcode : return (GxB_ANY_TIMES_FC64 ) ;
275 default : ;
276 }
277 break ;
278
279 case GB_DIV_opcode :
280
281 switch (add_opcode)
282 {
283 case GB_PLUS_opcode : return (GxB_PLUS_DIV_FC64 ) ;
284 case GB_TIMES_opcode : return (GxB_TIMES_DIV_FC64) ;
285 case GB_ANY_opcode : return (GxB_ANY_DIV_FC64 ) ;
286 default : ;
287 }
288 break ;
289
290 case GB_RDIV_opcode :
291
292 switch (add_opcode)
293 {
294 case GB_PLUS_opcode : return (GxB_PLUS_RDIV_FC64 ) ;
295 case GB_TIMES_opcode : return (GxB_TIMES_RDIV_FC64) ;
296 case GB_ANY_opcode : return (GxB_ANY_RDIV_FC64 ) ;
297 default : ;
298 }
299 break ;
300
301 case GB_RMINUS_opcode :
302
303 switch (add_opcode)
304 {
305 case GB_PLUS_opcode : return (GxB_PLUS_RMINUS_FC64 ) ;
306 case GB_TIMES_opcode : return (GxB_TIMES_RMINUS_FC64) ;
307 case GB_ANY_opcode : return (GxB_ANY_RMINUS_FC64 ) ;
308 default : ;
309 }
310 break ;
311 default : ;
312 }
313
314 }
315 else if (zcode != GB_BOOL_code)
316 {
317
318 //----------------------------------------------------------------------
319 // 1000 semirings with TxT->T multiply operators
320 //----------------------------------------------------------------------
321
322 // x,y,z are all the same non-Boolean type
323
324 switch (mult_opcode)
325 {
326
327 case GB_FIRST_opcode : // with (5 monoids) x (10 nonboolean types)
328
329 switch (add_opcode)
330 {
331
332 case GB_MIN_opcode :
333
334 switch (zcode)
335 {
336 case GB_INT8_code : return (GrB_MIN_FIRST_SEMIRING_INT8 ) ;
337 case GB_INT16_code : return (GrB_MIN_FIRST_SEMIRING_INT16 ) ;
338 case GB_INT32_code : return (GrB_MIN_FIRST_SEMIRING_INT32 ) ;
339 case GB_INT64_code : return (GrB_MIN_FIRST_SEMIRING_INT64 ) ;
340 case GB_UINT8_code : return (GrB_MIN_FIRST_SEMIRING_UINT8 ) ;
341 case GB_UINT16_code: return (GrB_MIN_FIRST_SEMIRING_UINT16) ;
342 case GB_UINT32_code: return (GrB_MIN_FIRST_SEMIRING_UINT32) ;
343 case GB_UINT64_code: return (GrB_MIN_FIRST_SEMIRING_UINT64) ;
344 case GB_FP32_code : return (GrB_MIN_FIRST_SEMIRING_FP32 ) ;
345 case GB_FP64_code : return (GrB_MIN_FIRST_SEMIRING_FP64 ) ;
346 default : ;
347 }
348 break ;
349
350 case GB_MAX_opcode :
351
352 switch (zcode)
353 {
354 case GB_INT8_code : return (GrB_MAX_FIRST_SEMIRING_INT8 ) ;
355 case GB_INT16_code : return (GrB_MAX_FIRST_SEMIRING_INT16 ) ;
356 case GB_INT32_code : return (GrB_MAX_FIRST_SEMIRING_INT32 ) ;
357 case GB_INT64_code : return (GrB_MAX_FIRST_SEMIRING_INT64 ) ;
358 case GB_UINT8_code : return (GrB_MAX_FIRST_SEMIRING_UINT8 ) ;
359 case GB_UINT16_code: return (GrB_MAX_FIRST_SEMIRING_UINT16) ;
360 case GB_UINT32_code: return (GrB_MAX_FIRST_SEMIRING_UINT32) ;
361 case GB_UINT64_code: return (GrB_MAX_FIRST_SEMIRING_UINT64) ;
362 case GB_FP32_code : return (GrB_MAX_FIRST_SEMIRING_FP32 ) ;
363 case GB_FP64_code : return (GrB_MAX_FIRST_SEMIRING_FP64 ) ;
364 default : ;
365 }
366 break ;
367
368 case GB_PLUS_opcode :
369
370 switch (zcode)
371 {
372 case GB_INT8_code : return (GxB_PLUS_FIRST_INT8 ) ;
373 case GB_UINT8_code : return (GxB_PLUS_FIRST_UINT8 ) ;
374 case GB_INT16_code : return (GxB_PLUS_FIRST_INT16 ) ;
375 case GB_UINT16_code: return (GxB_PLUS_FIRST_UINT16 ) ;
376 case GB_INT32_code : return (GxB_PLUS_FIRST_INT32 ) ;
377 case GB_UINT32_code: return (GxB_PLUS_FIRST_UINT32 ) ;
378 case GB_INT64_code : return (GxB_PLUS_FIRST_INT64 ) ;
379 case GB_UINT64_code: return (GxB_PLUS_FIRST_UINT64 ) ;
380 case GB_FP32_code : return (GxB_PLUS_FIRST_FP32 ) ;
381 case GB_FP64_code : return (GxB_PLUS_FIRST_FP64 ) ;
382 default : ;
383 }
384 break ;
385
386 case GB_TIMES_opcode :
387
388 switch (zcode)
389 {
390 case GB_INT8_code : return (GxB_TIMES_FIRST_INT8 ) ;
391 case GB_UINT8_code : return (GxB_TIMES_FIRST_UINT8 ) ;
392 case GB_INT16_code : return (GxB_TIMES_FIRST_INT16 ) ;
393 case GB_UINT16_code: return (GxB_TIMES_FIRST_UINT16 ) ;
394 case GB_INT32_code : return (GxB_TIMES_FIRST_INT32 ) ;
395 case GB_UINT32_code: return (GxB_TIMES_FIRST_UINT32 ) ;
396 case GB_INT64_code : return (GxB_TIMES_FIRST_INT64 ) ;
397 case GB_UINT64_code: return (GxB_TIMES_FIRST_UINT64 ) ;
398 case GB_FP32_code : return (GxB_TIMES_FIRST_FP32 ) ;
399 case GB_FP64_code : return (GxB_TIMES_FIRST_FP64 ) ;
400 default : ;
401 }
402 break ;
403
404 case GB_ANY_opcode :
405
406 switch (zcode)
407 {
408 case GB_INT8_code : return (GxB_ANY_FIRST_INT8 ) ;
409 case GB_UINT8_code : return (GxB_ANY_FIRST_UINT8 ) ;
410 case GB_INT16_code : return (GxB_ANY_FIRST_INT16 ) ;
411 case GB_UINT16_code: return (GxB_ANY_FIRST_UINT16 ) ;
412 case GB_INT32_code : return (GxB_ANY_FIRST_INT32 ) ;
413 case GB_UINT32_code: return (GxB_ANY_FIRST_UINT32 ) ;
414 case GB_INT64_code : return (GxB_ANY_FIRST_INT64 ) ;
415 case GB_UINT64_code: return (GxB_ANY_FIRST_UINT64 ) ;
416 case GB_FP32_code : return (GxB_ANY_FIRST_FP32 ) ;
417 case GB_FP64_code : return (GxB_ANY_FIRST_FP64 ) ;
418 default : ;
419 }
420 break ;
421
422 default : ;
423 }
424 break ;
425
426 case GB_SECOND_opcode : // with (5 monoids) x (10 nonboolean types)
427
428 switch (add_opcode)
429 {
430
431 case GB_MIN_opcode :
432
433 switch (zcode)
434 {
435 case GB_INT8_code : return (GrB_MIN_SECOND_SEMIRING_INT8 ) ;
436 case GB_INT16_code : return (GrB_MIN_SECOND_SEMIRING_INT16 ) ;
437 case GB_INT32_code : return (GrB_MIN_SECOND_SEMIRING_INT32 ) ;
438 case GB_INT64_code : return (GrB_MIN_SECOND_SEMIRING_INT64 ) ;
439 case GB_UINT8_code : return (GrB_MIN_SECOND_SEMIRING_UINT8 ) ;
440 case GB_UINT16_code: return (GrB_MIN_SECOND_SEMIRING_UINT16) ;
441 case GB_UINT32_code: return (GrB_MIN_SECOND_SEMIRING_UINT32) ;
442 case GB_UINT64_code: return (GrB_MIN_SECOND_SEMIRING_UINT64) ;
443 case GB_FP32_code : return (GrB_MIN_SECOND_SEMIRING_FP32 ) ;
444 case GB_FP64_code : return (GrB_MIN_SECOND_SEMIRING_FP64 ) ;
445 default : ;
446 }
447 break ;
448
449 case GB_MAX_opcode :
450
451 switch (zcode)
452 {
453 case GB_INT8_code : return (GrB_MAX_SECOND_SEMIRING_INT8 ) ;
454 case GB_INT16_code : return (GrB_MAX_SECOND_SEMIRING_INT16 ) ;
455 case GB_INT32_code : return (GrB_MAX_SECOND_SEMIRING_INT32 ) ;
456 case GB_INT64_code : return (GrB_MAX_SECOND_SEMIRING_INT64 ) ;
457 case GB_UINT8_code : return (GrB_MAX_SECOND_SEMIRING_UINT8 ) ;
458 case GB_UINT16_code: return (GrB_MAX_SECOND_SEMIRING_UINT16) ;
459 case GB_UINT32_code: return (GrB_MAX_SECOND_SEMIRING_UINT32) ;
460 case GB_UINT64_code: return (GrB_MAX_SECOND_SEMIRING_UINT64) ;
461 case GB_FP32_code : return (GrB_MAX_SECOND_SEMIRING_FP32 ) ;
462 case GB_FP64_code : return (GrB_MAX_SECOND_SEMIRING_FP64 ) ;
463 default : ;
464 }
465 break ;
466
467 case GB_PLUS_opcode :
468
469 switch (zcode)
470 {
471 case GB_INT8_code : return (GxB_PLUS_SECOND_INT8 ) ;
472 case GB_UINT8_code : return (GxB_PLUS_SECOND_UINT8 ) ;
473 case GB_INT16_code : return (GxB_PLUS_SECOND_INT16 ) ;
474 case GB_UINT16_code: return (GxB_PLUS_SECOND_UINT16 ) ;
475 case GB_INT32_code : return (GxB_PLUS_SECOND_INT32 ) ;
476 case GB_UINT32_code: return (GxB_PLUS_SECOND_UINT32 ) ;
477 case GB_INT64_code : return (GxB_PLUS_SECOND_INT64 ) ;
478 case GB_UINT64_code: return (GxB_PLUS_SECOND_UINT64 ) ;
479 case GB_FP32_code : return (GxB_PLUS_SECOND_FP32 ) ;
480 case GB_FP64_code : return (GxB_PLUS_SECOND_FP64 ) ;
481 default : ;
482 }
483 break ;
484
485 case GB_TIMES_opcode :
486
487 switch (zcode)
488 {
489 case GB_INT8_code : return (GxB_TIMES_SECOND_INT8 ) ;
490 case GB_UINT8_code : return (GxB_TIMES_SECOND_UINT8 ) ;
491 case GB_INT16_code : return (GxB_TIMES_SECOND_INT16 ) ;
492 case GB_UINT16_code: return (GxB_TIMES_SECOND_UINT16) ;
493 case GB_INT32_code : return (GxB_TIMES_SECOND_INT32 ) ;
494 case GB_UINT32_code: return (GxB_TIMES_SECOND_UINT32) ;
495 case GB_INT64_code : return (GxB_TIMES_SECOND_INT64 ) ;
496 case GB_UINT64_code: return (GxB_TIMES_SECOND_UINT64) ;
497 case GB_FP32_code : return (GxB_TIMES_SECOND_FP32 ) ;
498 case GB_FP64_code : return (GxB_TIMES_SECOND_FP64 ) ;
499 default : ;
500 }
501 break ;
502
503 case GB_ANY_opcode :
504
505 switch (zcode)
506 {
507 case GB_INT8_code : return (GxB_ANY_SECOND_INT8 ) ;
508 case GB_UINT8_code : return (GxB_ANY_SECOND_UINT8 ) ;
509 case GB_INT16_code : return (GxB_ANY_SECOND_INT16 ) ;
510 case GB_UINT16_code: return (GxB_ANY_SECOND_UINT16 ) ;
511 case GB_INT32_code : return (GxB_ANY_SECOND_INT32 ) ;
512 case GB_UINT32_code: return (GxB_ANY_SECOND_UINT32 ) ;
513 case GB_INT64_code : return (GxB_ANY_SECOND_INT64 ) ;
514 case GB_UINT64_code: return (GxB_ANY_SECOND_UINT64 ) ;
515 case GB_FP32_code : return (GxB_ANY_SECOND_FP32 ) ;
516 case GB_FP64_code : return (GxB_ANY_SECOND_FP64 ) ;
517 default : ;
518 }
519 break ;
520
521 default : ;
522 }
523 break ;
524
525 case GB_PAIR_opcode : // with (5 monoids) x (10 nonboolean types)
526
527 switch (add_opcode)
528 {
529
530 case GB_MIN_opcode :
531
532 switch (zcode)
533 {
534 case GB_INT8_code : return (GxB_MIN_PAIR_INT8 ) ;
535 case GB_UINT8_code : return (GxB_MIN_PAIR_UINT8 ) ;
536 case GB_INT16_code : return (GxB_MIN_PAIR_INT16 ) ;
537 case GB_UINT16_code: return (GxB_MIN_PAIR_UINT16 ) ;
538 case GB_INT32_code : return (GxB_MIN_PAIR_INT32 ) ;
539 case GB_UINT32_code: return (GxB_MIN_PAIR_UINT32 ) ;
540 case GB_INT64_code : return (GxB_MIN_PAIR_INT64 ) ;
541 case GB_UINT64_code: return (GxB_MIN_PAIR_UINT64 ) ;
542 case GB_FP32_code : return (GxB_MIN_PAIR_FP32 ) ;
543 case GB_FP64_code : return (GxB_MIN_PAIR_FP64 ) ;
544 default : ;
545 }
546 break ;
547
548 case GB_MAX_opcode :
549
550 switch (zcode)
551 {
552 case GB_INT8_code : return (GxB_MAX_PAIR_INT8 ) ;
553 case GB_UINT8_code : return (GxB_MAX_PAIR_UINT8 ) ;
554 case GB_INT16_code : return (GxB_MAX_PAIR_INT16 ) ;
555 case GB_UINT16_code: return (GxB_MAX_PAIR_UINT16 ) ;
556 case GB_INT32_code : return (GxB_MAX_PAIR_INT32 ) ;
557 case GB_UINT32_code: return (GxB_MAX_PAIR_UINT32 ) ;
558 case GB_INT64_code : return (GxB_MAX_PAIR_INT64 ) ;
559 case GB_UINT64_code: return (GxB_MAX_PAIR_UINT64 ) ;
560 case GB_FP32_code : return (GxB_MAX_PAIR_FP32 ) ;
561 case GB_FP64_code : return (GxB_MAX_PAIR_FP64 ) ;
562 default : ;
563 }
564 break ;
565
566 case GB_PLUS_opcode :
567
568 switch (zcode)
569 {
570 case GB_INT8_code : return (GxB_PLUS_PAIR_INT8 ) ;
571 case GB_UINT8_code : return (GxB_PLUS_PAIR_UINT8 ) ;
572 case GB_INT16_code : return (GxB_PLUS_PAIR_INT16 ) ;
573 case GB_UINT16_code: return (GxB_PLUS_PAIR_UINT16 ) ;
574 case GB_INT32_code : return (GxB_PLUS_PAIR_INT32 ) ;
575 case GB_UINT32_code: return (GxB_PLUS_PAIR_UINT32 ) ;
576 case GB_INT64_code : return (GxB_PLUS_PAIR_INT64 ) ;
577 case GB_UINT64_code: return (GxB_PLUS_PAIR_UINT64 ) ;
578 case GB_FP32_code : return (GxB_PLUS_PAIR_FP32 ) ;
579 case GB_FP64_code : return (GxB_PLUS_PAIR_FP64 ) ;
580 default : ;
581 }
582 break ;
583
584 case GB_TIMES_opcode :
585
586 switch (zcode)
587 {
588 case GB_INT8_code : return (GxB_TIMES_PAIR_INT8 ) ;
589 case GB_UINT8_code : return (GxB_TIMES_PAIR_UINT8 ) ;
590 case GB_INT16_code : return (GxB_TIMES_PAIR_INT16 ) ;
591 case GB_UINT16_code: return (GxB_TIMES_PAIR_UINT16 ) ;
592 case GB_INT32_code : return (GxB_TIMES_PAIR_INT32 ) ;
593 case GB_UINT32_code: return (GxB_TIMES_PAIR_UINT32 ) ;
594 case GB_INT64_code : return (GxB_TIMES_PAIR_INT64 ) ;
595 case GB_UINT64_code: return (GxB_TIMES_PAIR_UINT64 ) ;
596 case GB_FP32_code : return (GxB_TIMES_PAIR_FP32 ) ;
597 case GB_FP64_code : return (GxB_TIMES_PAIR_FP64 ) ;
598 default : ;
599 }
600 break ;
601
602 case GB_ANY_opcode :
603
604 switch (zcode)
605 {
606 case GB_INT8_code : return (GxB_ANY_PAIR_INT8 ) ;
607 case GB_UINT8_code : return (GxB_ANY_PAIR_UINT8 ) ;
608 case GB_INT16_code : return (GxB_ANY_PAIR_INT16 ) ;
609 case GB_UINT16_code: return (GxB_ANY_PAIR_UINT16 ) ;
610 case GB_INT32_code : return (GxB_ANY_PAIR_INT32 ) ;
611 case GB_UINT32_code: return (GxB_ANY_PAIR_UINT32 ) ;
612 case GB_INT64_code : return (GxB_ANY_PAIR_INT64 ) ;
613 case GB_UINT64_code: return (GxB_ANY_PAIR_UINT64 ) ;
614 case GB_FP32_code : return (GxB_ANY_PAIR_FP32 ) ;
615 case GB_FP64_code : return (GxB_ANY_PAIR_FP64 ) ;
616 default : ;
617 }
618 break ;
619
620 default : ;
621 }
622 break ;
623
624 case GB_MIN_opcode : // with (5 monoids) x (10 nonboolean types)
625
626 switch (add_opcode)
627 {
628
629 case GB_MIN_opcode :
630
631 switch (zcode)
632 {
633 case GB_INT8_code : return (GxB_MIN_MIN_INT8 ) ;
634 case GB_UINT8_code : return (GxB_MIN_MIN_UINT8 ) ;
635 case GB_INT16_code : return (GxB_MIN_MIN_INT16 ) ;
636 case GB_UINT16_code: return (GxB_MIN_MIN_UINT16 ) ;
637 case GB_INT32_code : return (GxB_MIN_MIN_INT32 ) ;
638 case GB_UINT32_code: return (GxB_MIN_MIN_UINT32 ) ;
639 case GB_INT64_code : return (GxB_MIN_MIN_INT64 ) ;
640 case GB_UINT64_code: return (GxB_MIN_MIN_UINT64 ) ;
641 case GB_FP32_code : return (GxB_MIN_MIN_FP32 ) ;
642 case GB_FP64_code : return (GxB_MIN_MIN_FP64 ) ;
643 default : ;
644 }
645 break ;
646
647 case GB_MAX_opcode :
648
649 switch (zcode)
650 {
651 case GB_INT8_code : return (GrB_MAX_MIN_SEMIRING_INT8 ) ;
652 case GB_INT16_code : return (GrB_MAX_MIN_SEMIRING_INT16 ) ;
653 case GB_INT32_code : return (GrB_MAX_MIN_SEMIRING_INT32 ) ;
654 case GB_INT64_code : return (GrB_MAX_MIN_SEMIRING_INT64 ) ;
655 case GB_UINT8_code : return (GrB_MAX_MIN_SEMIRING_UINT8 ) ;
656 case GB_UINT16_code: return (GrB_MAX_MIN_SEMIRING_UINT16) ;
657 case GB_UINT32_code: return (GrB_MAX_MIN_SEMIRING_UINT32) ;
658 case GB_UINT64_code: return (GrB_MAX_MIN_SEMIRING_UINT64) ;
659 case GB_FP32_code : return (GrB_MAX_MIN_SEMIRING_FP32 ) ;
660 case GB_FP64_code : return (GrB_MAX_MIN_SEMIRING_FP64 ) ;
661 default : ;
662 }
663 break ;
664
665 case GB_PLUS_opcode :
666
667 switch (zcode)
668 {
669 case GB_INT8_code : return (GrB_PLUS_MIN_SEMIRING_INT8 ) ;
670 case GB_INT16_code : return (GrB_PLUS_MIN_SEMIRING_INT16 ) ;
671 case GB_INT32_code : return (GrB_PLUS_MIN_SEMIRING_INT32 ) ;
672 case GB_INT64_code : return (GrB_PLUS_MIN_SEMIRING_INT64 ) ;
673 case GB_UINT8_code : return (GrB_PLUS_MIN_SEMIRING_UINT8 ) ;
674 case GB_UINT16_code: return (GrB_PLUS_MIN_SEMIRING_UINT16) ;
675 case GB_UINT32_code: return (GrB_PLUS_MIN_SEMIRING_UINT32) ;
676 case GB_UINT64_code: return (GrB_PLUS_MIN_SEMIRING_UINT64) ;
677 case GB_FP32_code : return (GrB_PLUS_MIN_SEMIRING_FP32 ) ;
678 case GB_FP64_code : return (GrB_PLUS_MIN_SEMIRING_FP64 ) ;
679 default : ;
680 }
681 break ;
682
683 case GB_TIMES_opcode :
684
685 switch (zcode)
686 {
687 case GB_INT8_code : return (GxB_TIMES_MIN_INT8 ) ;
688 case GB_UINT8_code : return (GxB_TIMES_MIN_UINT8 ) ;
689 case GB_INT16_code : return (GxB_TIMES_MIN_INT16 ) ;
690 case GB_UINT16_code: return (GxB_TIMES_MIN_UINT16 ) ;
691 case GB_INT32_code : return (GxB_TIMES_MIN_INT32 ) ;
692 case GB_UINT32_code: return (GxB_TIMES_MIN_UINT32 ) ;
693 case GB_INT64_code : return (GxB_TIMES_MIN_INT64 ) ;
694 case GB_UINT64_code: return (GxB_TIMES_MIN_UINT64 ) ;
695 case GB_FP32_code : return (GxB_TIMES_MIN_FP32 ) ;
696 case GB_FP64_code : return (GxB_TIMES_MIN_FP64 ) ;
697 default : ;
698 }
699 break ;
700
701 case GB_ANY_opcode :
702
703 switch (zcode)
704 {
705 case GB_INT8_code : return (GxB_ANY_MIN_INT8 ) ;
706 case GB_UINT8_code : return (GxB_ANY_MIN_UINT8 ) ;
707 case GB_INT16_code : return (GxB_ANY_MIN_INT16 ) ;
708 case GB_UINT16_code: return (GxB_ANY_MIN_UINT16 ) ;
709 case GB_INT32_code : return (GxB_ANY_MIN_INT32 ) ;
710 case GB_UINT32_code: return (GxB_ANY_MIN_UINT32 ) ;
711 case GB_INT64_code : return (GxB_ANY_MIN_INT64 ) ;
712 case GB_UINT64_code: return (GxB_ANY_MIN_UINT64 ) ;
713 case GB_FP32_code : return (GxB_ANY_MIN_FP32 ) ;
714 case GB_FP64_code : return (GxB_ANY_MIN_FP64 ) ;
715 default : ;
716 }
717 break ;
718
719 default : ;
720 }
721 break ;
722
723 case GB_MAX_opcode : // with (5 monoids) x (10 nonboolean types)
724
725 switch (add_opcode)
726 {
727
728 case GB_MIN_opcode :
729
730 switch (zcode)
731 {
732 case GB_INT8_code : return (GrB_MIN_MAX_SEMIRING_INT8 ) ;
733 case GB_INT16_code : return (GrB_MIN_MAX_SEMIRING_INT16 ) ;
734 case GB_INT32_code : return (GrB_MIN_MAX_SEMIRING_INT32 ) ;
735 case GB_INT64_code : return (GrB_MIN_MAX_SEMIRING_INT64 ) ;
736 case GB_UINT8_code : return (GrB_MIN_MAX_SEMIRING_UINT8 ) ;
737 case GB_UINT16_code: return (GrB_MIN_MAX_SEMIRING_UINT16) ;
738 case GB_UINT32_code: return (GrB_MIN_MAX_SEMIRING_UINT32) ;
739 case GB_UINT64_code: return (GrB_MIN_MAX_SEMIRING_UINT64) ;
740 case GB_FP32_code : return (GrB_MIN_MAX_SEMIRING_FP32 ) ;
741 case GB_FP64_code : return (GrB_MIN_MAX_SEMIRING_FP64 ) ;
742 default : ;
743 }
744 break ;
745
746 case GB_MAX_opcode :
747
748 switch (zcode)
749 {
750 case GB_INT8_code : return (GxB_MAX_MAX_INT8 ) ;
751 case GB_UINT8_code : return (GxB_MAX_MAX_UINT8 ) ;
752 case GB_INT16_code : return (GxB_MAX_MAX_INT16 ) ;
753 case GB_UINT16_code: return (GxB_MAX_MAX_UINT16 ) ;
754 case GB_INT32_code : return (GxB_MAX_MAX_INT32 ) ;
755 case GB_UINT32_code: return (GxB_MAX_MAX_UINT32 ) ;
756 case GB_INT64_code : return (GxB_MAX_MAX_INT64 ) ;
757 case GB_UINT64_code: return (GxB_MAX_MAX_UINT64 ) ;
758 case GB_FP32_code : return (GxB_MAX_MAX_FP32 ) ;
759 case GB_FP64_code : return (GxB_MAX_MAX_FP64 ) ;
760 default : ;
761 }
762 break ;
763
764 case GB_PLUS_opcode :
765
766 switch (zcode)
767 {
768 case GB_INT8_code : return (GxB_PLUS_MAX_INT8 ) ;
769 case GB_UINT8_code : return (GxB_PLUS_MAX_UINT8 ) ;
770 case GB_INT16_code : return (GxB_PLUS_MAX_INT16 ) ;
771 case GB_UINT16_code: return (GxB_PLUS_MAX_UINT16 ) ;
772 case GB_INT32_code : return (GxB_PLUS_MAX_INT32 ) ;
773 case GB_UINT32_code: return (GxB_PLUS_MAX_UINT32 ) ;
774 case GB_INT64_code : return (GxB_PLUS_MAX_INT64 ) ;
775 case GB_UINT64_code: return (GxB_PLUS_MAX_UINT64 ) ;
776 case GB_FP32_code : return (GxB_PLUS_MAX_FP32 ) ;
777 case GB_FP64_code : return (GxB_PLUS_MAX_FP64 ) ;
778 default : ;
779 }
780 break ;
781
782 case GB_TIMES_opcode :
783
784 switch (zcode)
785 {
786 case GB_INT8_code : return (GxB_TIMES_MAX_INT8 ) ;
787 case GB_UINT8_code : return (GxB_TIMES_MAX_UINT8 ) ;
788 case GB_INT16_code : return (GxB_TIMES_MAX_INT16 ) ;
789 case GB_UINT16_code: return (GxB_TIMES_MAX_UINT16 ) ;
790 case GB_INT32_code : return (GxB_TIMES_MAX_INT32 ) ;
791 case GB_UINT32_code: return (GxB_TIMES_MAX_UINT32 ) ;
792 case GB_INT64_code : return (GxB_TIMES_MAX_INT64 ) ;
793 case GB_UINT64_code: return (GxB_TIMES_MAX_UINT64 ) ;
794 case GB_FP32_code : return (GxB_TIMES_MAX_FP32 ) ;
795 case GB_FP64_code : return (GxB_TIMES_MAX_FP64 ) ;
796 default : ;
797 }
798 break ;
799
800 case GB_ANY_opcode :
801
802 switch (zcode)
803 {
804 case GB_INT8_code : return (GxB_ANY_MAX_INT8 ) ;
805 case GB_UINT8_code : return (GxB_ANY_MAX_UINT8 ) ;
806 case GB_INT16_code : return (GxB_ANY_MAX_INT16 ) ;
807 case GB_UINT16_code: return (GxB_ANY_MAX_UINT16 ) ;
808 case GB_INT32_code : return (GxB_ANY_MAX_INT32 ) ;
809 case GB_UINT32_code: return (GxB_ANY_MAX_UINT32 ) ;
810 case GB_INT64_code : return (GxB_ANY_MAX_INT64 ) ;
811 case GB_UINT64_code: return (GxB_ANY_MAX_UINT64 ) ;
812 case GB_FP32_code : return (GxB_ANY_MAX_FP32 ) ;
813 case GB_FP64_code : return (GxB_ANY_MAX_FP64 ) ;
814 default : ;
815 }
816 break ;
817
818 default : ;
819 }
820 break ;
821
822 case GB_PLUS_opcode : // with (5 monoids) x (10 nonboolean types)
823
824 switch (add_opcode)
825 {
826
827 case GB_MIN_opcode :
828
829 switch (zcode)
830 {
831 case GB_INT8_code : return (GrB_MIN_PLUS_SEMIRING_INT8 ) ;
832 case GB_INT16_code : return (GrB_MIN_PLUS_SEMIRING_INT16 ) ;
833 case GB_INT32_code : return (GrB_MIN_PLUS_SEMIRING_INT32 ) ;
834 case GB_INT64_code : return (GrB_MIN_PLUS_SEMIRING_INT64 ) ;
835 case GB_UINT8_code : return (GrB_MIN_PLUS_SEMIRING_UINT8 ) ;
836 case GB_UINT16_code: return (GrB_MIN_PLUS_SEMIRING_UINT16) ;
837 case GB_UINT32_code: return (GrB_MIN_PLUS_SEMIRING_UINT32) ;
838 case GB_UINT64_code: return (GrB_MIN_PLUS_SEMIRING_UINT64) ;
839 case GB_FP32_code : return (GrB_MIN_PLUS_SEMIRING_FP32 ) ;
840 case GB_FP64_code : return (GrB_MIN_PLUS_SEMIRING_FP64 ) ;
841 default : ;
842 }
843 break ;
844
845 case GB_MAX_opcode :
846
847 switch (zcode)
848 {
849 case GB_INT8_code : return (GrB_MAX_PLUS_SEMIRING_INT8 ) ;
850 case GB_INT16_code : return (GrB_MAX_PLUS_SEMIRING_INT16 ) ;
851 case GB_INT32_code : return (GrB_MAX_PLUS_SEMIRING_INT32 ) ;
852 case GB_INT64_code : return (GrB_MAX_PLUS_SEMIRING_INT64 ) ;
853 case GB_UINT8_code : return (GrB_MAX_PLUS_SEMIRING_UINT8 ) ;
854 case GB_UINT16_code: return (GrB_MAX_PLUS_SEMIRING_UINT16) ;
855 case GB_UINT32_code: return (GrB_MAX_PLUS_SEMIRING_UINT32) ;
856 case GB_UINT64_code: return (GrB_MAX_PLUS_SEMIRING_UINT64) ;
857 case GB_FP32_code : return (GrB_MAX_PLUS_SEMIRING_FP32 ) ;
858 case GB_FP64_code : return (GrB_MAX_PLUS_SEMIRING_FP64 ) ;
859 default : ;
860 }
861 break ;
862
863 case GB_PLUS_opcode :
864
865 switch (zcode)
866 {
867 case GB_INT8_code : return (GxB_PLUS_PLUS_INT8 ) ;
868 case GB_UINT8_code : return (GxB_PLUS_PLUS_UINT8 ) ;
869 case GB_INT16_code : return (GxB_PLUS_PLUS_INT16 ) ;
870 case GB_UINT16_code: return (GxB_PLUS_PLUS_UINT16 ) ;
871 case GB_INT32_code : return (GxB_PLUS_PLUS_INT32 ) ;
872 case GB_UINT32_code: return (GxB_PLUS_PLUS_UINT32 ) ;
873 case GB_INT64_code : return (GxB_PLUS_PLUS_INT64 ) ;
874 case GB_UINT64_code: return (GxB_PLUS_PLUS_UINT64 ) ;
875 case GB_FP32_code : return (GxB_PLUS_PLUS_FP32 ) ;
876 case GB_FP64_code : return (GxB_PLUS_PLUS_FP64 ) ;
877 default : ;
878 }
879 break ;
880
881 case GB_TIMES_opcode :
882
883 switch (zcode)
884 {
885 case GB_INT8_code : return (GxB_TIMES_PLUS_INT8 ) ;
886 case GB_UINT8_code : return (GxB_TIMES_PLUS_UINT8 ) ;
887 case GB_INT16_code : return (GxB_TIMES_PLUS_INT16 ) ;
888 case GB_UINT16_code: return (GxB_TIMES_PLUS_UINT16 ) ;
889 case GB_INT32_code : return (GxB_TIMES_PLUS_INT32 ) ;
890 case GB_UINT32_code: return (GxB_TIMES_PLUS_UINT32 ) ;
891 case GB_INT64_code : return (GxB_TIMES_PLUS_INT64 ) ;
892 case GB_UINT64_code: return (GxB_TIMES_PLUS_UINT64 ) ;
893 case GB_FP32_code : return (GxB_TIMES_PLUS_FP32 ) ;
894 case GB_FP64_code : return (GxB_TIMES_PLUS_FP64 ) ;
895 default : ;
896 }
897 break ;
898
899 case GB_ANY_opcode :
900
901 switch (zcode)
902 {
903 case GB_INT8_code : return (GxB_ANY_PLUS_INT8 ) ;
904 case GB_UINT8_code : return (GxB_ANY_PLUS_UINT8 ) ;
905 case GB_INT16_code : return (GxB_ANY_PLUS_INT16 ) ;
906 case GB_UINT16_code: return (GxB_ANY_PLUS_UINT16 ) ;
907 case GB_INT32_code : return (GxB_ANY_PLUS_INT32 ) ;
908 case GB_UINT32_code: return (GxB_ANY_PLUS_UINT32 ) ;
909 case GB_INT64_code : return (GxB_ANY_PLUS_INT64 ) ;
910 case GB_UINT64_code: return (GxB_ANY_PLUS_UINT64 ) ;
911 case GB_FP32_code : return (GxB_ANY_PLUS_FP32 ) ;
912 case GB_FP64_code : return (GxB_ANY_PLUS_FP64 ) ;
913 default : ;
914 }
915 break ;
916
917 default : ;
918 }
919 break ;
920
921 case GB_MINUS_opcode : // with (5 monoids) x (10 nonboolean types)
922
923 switch (add_opcode)
924 {
925
926 case GB_MIN_opcode :
927
928 switch (zcode)
929 {
930 case GB_INT8_code : return (GxB_MIN_MINUS_INT8 ) ;
931 case GB_UINT8_code : return (GxB_MIN_MINUS_UINT8 ) ;
932 case GB_INT16_code : return (GxB_MIN_MINUS_INT16 ) ;
933 case GB_UINT16_code: return (GxB_MIN_MINUS_UINT16 ) ;
934 case GB_INT32_code : return (GxB_MIN_MINUS_INT32 ) ;
935 case GB_UINT32_code: return (GxB_MIN_MINUS_UINT32 ) ;
936 case GB_INT64_code : return (GxB_MIN_MINUS_INT64 ) ;
937 case GB_UINT64_code: return (GxB_MIN_MINUS_UINT64 ) ;
938 case GB_FP32_code : return (GxB_MIN_MINUS_FP32 ) ;
939 case GB_FP64_code : return (GxB_MIN_MINUS_FP64 ) ;
940 default : ;
941 }
942 break ;
943
944 case GB_MAX_opcode :
945
946 switch (zcode)
947 {
948 case GB_INT8_code : return (GxB_MAX_MINUS_INT8 ) ;
949 case GB_UINT8_code : return (GxB_MAX_MINUS_UINT8 ) ;
950 case GB_INT16_code : return (GxB_MAX_MINUS_INT16 ) ;
951 case GB_UINT16_code: return (GxB_MAX_MINUS_UINT16 ) ;
952 case GB_INT32_code : return (GxB_MAX_MINUS_INT32 ) ;
953 case GB_UINT32_code: return (GxB_MAX_MINUS_UINT32 ) ;
954 case GB_INT64_code : return (GxB_MAX_MINUS_INT64 ) ;
955 case GB_UINT64_code: return (GxB_MAX_MINUS_UINT64 ) ;
956 case GB_FP32_code : return (GxB_MAX_MINUS_FP32 ) ;
957 case GB_FP64_code : return (GxB_MAX_MINUS_FP64 ) ;
958 default : ;
959 }
960 break ;
961
962 case GB_PLUS_opcode :
963
964 switch (zcode)
965 {
966 case GB_INT8_code : return (GxB_PLUS_MINUS_INT8 ) ;
967 case GB_UINT8_code : return (GxB_PLUS_MINUS_UINT8 ) ;
968 case GB_INT16_code : return (GxB_PLUS_MINUS_INT16 ) ;
969 case GB_UINT16_code: return (GxB_PLUS_MINUS_UINT16 ) ;
970 case GB_INT32_code : return (GxB_PLUS_MINUS_INT32 ) ;
971 case GB_UINT32_code: return (GxB_PLUS_MINUS_UINT32 ) ;
972 case GB_INT64_code : return (GxB_PLUS_MINUS_INT64 ) ;
973 case GB_UINT64_code: return (GxB_PLUS_MINUS_UINT64 ) ;
974 case GB_FP32_code : return (GxB_PLUS_MINUS_FP32 ) ;
975 case GB_FP64_code : return (GxB_PLUS_MINUS_FP64 ) ;
976 default : ;
977 }
978 break ;
979
980 case GB_TIMES_opcode :
981
982 switch (zcode)
983 {
984 case GB_INT8_code : return (GxB_TIMES_MINUS_INT8 ) ;
985 case GB_UINT8_code : return (GxB_TIMES_MINUS_UINT8 ) ;
986 case GB_INT16_code : return (GxB_TIMES_MINUS_INT16 ) ;
987 case GB_UINT16_code: return (GxB_TIMES_MINUS_UINT16 ) ;
988 case GB_INT32_code : return (GxB_TIMES_MINUS_INT32 ) ;
989 case GB_UINT32_code: return (GxB_TIMES_MINUS_UINT32 ) ;
990 case GB_INT64_code : return (GxB_TIMES_MINUS_INT64 ) ;
991 case GB_UINT64_code: return (GxB_TIMES_MINUS_UINT64 ) ;
992 case GB_FP32_code : return (GxB_TIMES_MINUS_FP32 ) ;
993 case GB_FP64_code : return (GxB_TIMES_MINUS_FP64 ) ;
994 default : ;
995 }
996 break ;
997
998 case GB_ANY_opcode :
999
1000 switch (zcode)
1001 {
1002 case GB_INT8_code : return (GxB_ANY_MINUS_INT8 ) ;
1003 case GB_UINT8_code : return (GxB_ANY_MINUS_UINT8 ) ;
1004 case GB_INT16_code : return (GxB_ANY_MINUS_INT16 ) ;
1005 case GB_UINT16_code: return (GxB_ANY_MINUS_UINT16 ) ;
1006 case GB_INT32_code : return (GxB_ANY_MINUS_INT32 ) ;
1007 case GB_UINT32_code: return (GxB_ANY_MINUS_UINT32 ) ;
1008 case GB_INT64_code : return (GxB_ANY_MINUS_INT64 ) ;
1009 case GB_UINT64_code: return (GxB_ANY_MINUS_UINT64 ) ;
1010 case GB_FP32_code : return (GxB_ANY_MINUS_FP32 ) ;
1011 case GB_FP64_code : return (GxB_ANY_MINUS_FP64 ) ;
1012 default : ;
1013 }
1014 break ;
1015
1016 default : ;
1017 }
1018 break ;
1019
1020 case GB_RMINUS_opcode : // with (5 monoids) x (10 nonboolean types)
1021
1022 switch (add_opcode)
1023 {
1024
1025 case GB_MIN_opcode :
1026
1027 switch (zcode)
1028 {
1029 case GB_INT8_code : return (GxB_MIN_RMINUS_INT8 ) ;
1030 case GB_UINT8_code : return (GxB_MIN_RMINUS_UINT8 ) ;
1031 case GB_INT16_code : return (GxB_MIN_RMINUS_INT16 ) ;
1032 case GB_UINT16_code: return (GxB_MIN_RMINUS_UINT16 ) ;
1033 case GB_INT32_code : return (GxB_MIN_RMINUS_INT32 ) ;
1034 case GB_UINT32_code: return (GxB_MIN_RMINUS_UINT32 ) ;
1035 case GB_INT64_code : return (GxB_MIN_RMINUS_INT64 ) ;
1036 case GB_UINT64_code: return (GxB_MIN_RMINUS_UINT64 ) ;
1037 case GB_FP32_code : return (GxB_MIN_RMINUS_FP32 ) ;
1038 case GB_FP64_code : return (GxB_MIN_RMINUS_FP64 ) ;
1039 default : ;
1040 }
1041 break ;
1042
1043 case GB_MAX_opcode :
1044
1045 switch (zcode)
1046 {
1047 case GB_INT8_code : return (GxB_MAX_RMINUS_INT8 ) ;
1048 case GB_UINT8_code : return (GxB_MAX_RMINUS_UINT8 ) ;
1049 case GB_INT16_code : return (GxB_MAX_RMINUS_INT16 ) ;
1050 case GB_UINT16_code: return (GxB_MAX_RMINUS_UINT16 ) ;
1051 case GB_INT32_code : return (GxB_MAX_RMINUS_INT32 ) ;
1052 case GB_UINT32_code: return (GxB_MAX_RMINUS_UINT32 ) ;
1053 case GB_INT64_code : return (GxB_MAX_RMINUS_INT64 ) ;
1054 case GB_UINT64_code: return (GxB_MAX_RMINUS_UINT64 ) ;
1055 case GB_FP32_code : return (GxB_MAX_RMINUS_FP32 ) ;
1056 case GB_FP64_code : return (GxB_MAX_RMINUS_FP64 ) ;
1057 default : ;
1058 }
1059 break ;
1060
1061 case GB_PLUS_opcode :
1062
1063 switch (zcode)
1064 {
1065 case GB_INT8_code : return (GxB_PLUS_RMINUS_INT8 ) ;
1066 case GB_UINT8_code : return (GxB_PLUS_RMINUS_UINT8 ) ;
1067 case GB_INT16_code : return (GxB_PLUS_RMINUS_INT16 ) ;
1068 case GB_UINT16_code: return (GxB_PLUS_RMINUS_UINT16 ) ;
1069 case GB_INT32_code : return (GxB_PLUS_RMINUS_INT32 ) ;
1070 case GB_UINT32_code: return (GxB_PLUS_RMINUS_UINT32 ) ;
1071 case GB_INT64_code : return (GxB_PLUS_RMINUS_INT64 ) ;
1072 case GB_UINT64_code: return (GxB_PLUS_RMINUS_UINT64 ) ;
1073 case GB_FP32_code : return (GxB_PLUS_RMINUS_FP32 ) ;
1074 case GB_FP64_code : return (GxB_PLUS_RMINUS_FP64 ) ;
1075 default : ;
1076 }
1077 break ;
1078
1079 case GB_TIMES_opcode :
1080
1081 switch (zcode)
1082 {
1083 case GB_INT8_code : return (GxB_TIMES_RMINUS_INT8 ) ;
1084 case GB_UINT8_code : return (GxB_TIMES_RMINUS_UINT8 ) ;
1085 case GB_INT16_code : return (GxB_TIMES_RMINUS_INT16 ) ;
1086 case GB_UINT16_code: return (GxB_TIMES_RMINUS_UINT16) ;
1087 case GB_INT32_code : return (GxB_TIMES_RMINUS_INT32 ) ;
1088 case GB_UINT32_code: return (GxB_TIMES_RMINUS_UINT32) ;
1089 case GB_INT64_code : return (GxB_TIMES_RMINUS_INT64 ) ;
1090 case GB_UINT64_code: return (GxB_TIMES_RMINUS_UINT64) ;
1091 case GB_FP32_code : return (GxB_TIMES_RMINUS_FP32 ) ;
1092 case GB_FP64_code : return (GxB_TIMES_RMINUS_FP64 ) ;
1093 default : ;
1094 }
1095 break ;
1096
1097 case GB_ANY_opcode :
1098
1099 switch (zcode)
1100 {
1101 case GB_INT8_code : return (GxB_ANY_RMINUS_INT8 ) ;
1102 case GB_UINT8_code : return (GxB_ANY_RMINUS_UINT8 ) ;
1103 case GB_INT16_code : return (GxB_ANY_RMINUS_INT16 ) ;
1104 case GB_UINT16_code: return (GxB_ANY_RMINUS_UINT16 ) ;
1105 case GB_INT32_code : return (GxB_ANY_RMINUS_INT32 ) ;
1106 case GB_UINT32_code: return (GxB_ANY_RMINUS_UINT32 ) ;
1107 case GB_INT64_code : return (GxB_ANY_RMINUS_INT64 ) ;
1108 case GB_UINT64_code: return (GxB_ANY_RMINUS_UINT64 ) ;
1109 case GB_FP32_code : return (GxB_ANY_RMINUS_FP32 ) ;
1110 case GB_FP64_code : return (GxB_ANY_RMINUS_FP64 ) ;
1111 default : ;
1112 }
1113 break ;
1114
1115 default : ;
1116 }
1117 break ;
1118
1119 case GB_TIMES_opcode : // with (5 monoids) x (10 nonboolean types)
1120
1121 switch (add_opcode)
1122 {
1123
1124 case GB_MIN_opcode :
1125
1126 switch (zcode)
1127 {
1128 case GB_INT8_code : return (GrB_MIN_TIMES_SEMIRING_INT8 ) ;
1129 case GB_INT16_code : return (GrB_MIN_TIMES_SEMIRING_INT16 ) ;
1130 case GB_INT32_code : return (GrB_MIN_TIMES_SEMIRING_INT32 ) ;
1131 case GB_INT64_code : return (GrB_MIN_TIMES_SEMIRING_INT64 ) ;
1132 case GB_UINT8_code : return (GrB_MIN_TIMES_SEMIRING_UINT8 ) ;
1133 case GB_UINT16_code: return (GrB_MIN_TIMES_SEMIRING_UINT16) ;
1134 case GB_UINT32_code: return (GrB_MIN_TIMES_SEMIRING_UINT32) ;
1135 case GB_UINT64_code: return (GrB_MIN_TIMES_SEMIRING_UINT64) ;
1136 case GB_FP32_code : return (GrB_MIN_TIMES_SEMIRING_FP32 ) ;
1137 case GB_FP64_code : return (GrB_MIN_TIMES_SEMIRING_FP64 ) ;
1138 default : ;
1139 }
1140 break ;
1141
1142 case GB_MAX_opcode :
1143
1144 switch (zcode)
1145 {
1146 case GB_INT8_code : return (GrB_MAX_TIMES_SEMIRING_INT8 ) ;
1147 case GB_INT16_code : return (GrB_MAX_TIMES_SEMIRING_INT16 ) ;
1148 case GB_INT32_code : return (GrB_MAX_TIMES_SEMIRING_INT32 ) ;
1149 case GB_INT64_code : return (GrB_MAX_TIMES_SEMIRING_INT64 ) ;
1150 case GB_UINT8_code : return (GrB_MAX_TIMES_SEMIRING_UINT8 ) ;
1151 case GB_UINT16_code: return (GrB_MAX_TIMES_SEMIRING_UINT16) ;
1152 case GB_UINT32_code: return (GrB_MAX_TIMES_SEMIRING_UINT32) ;
1153 case GB_UINT64_code: return (GrB_MAX_TIMES_SEMIRING_UINT64) ;
1154 case GB_FP32_code : return (GrB_MAX_TIMES_SEMIRING_FP32 ) ;
1155 case GB_FP64_code : return (GrB_MAX_TIMES_SEMIRING_FP64 ) ;
1156 default : ;
1157 }
1158 break ;
1159
1160 case GB_PLUS_opcode :
1161
1162 switch (zcode)
1163 {
1164 case GB_INT8_code : return (GrB_PLUS_TIMES_SEMIRING_INT8 ) ;
1165 case GB_INT16_code : return (GrB_PLUS_TIMES_SEMIRING_INT16 ) ;
1166 case GB_INT32_code : return (GrB_PLUS_TIMES_SEMIRING_INT32 ) ;
1167 case GB_INT64_code : return (GrB_PLUS_TIMES_SEMIRING_INT64 ) ;
1168 case GB_UINT8_code : return (GrB_PLUS_TIMES_SEMIRING_UINT8 ) ;
1169 case GB_UINT16_code: return (GrB_PLUS_TIMES_SEMIRING_UINT16) ;
1170 case GB_UINT32_code: return (GrB_PLUS_TIMES_SEMIRING_UINT32) ;
1171 case GB_UINT64_code: return (GrB_PLUS_TIMES_SEMIRING_UINT64) ;
1172 case GB_FP32_code : return (GrB_PLUS_TIMES_SEMIRING_FP32 ) ;
1173 case GB_FP64_code : return (GrB_PLUS_TIMES_SEMIRING_FP64 ) ;
1174 default : ;
1175 }
1176 break ;
1177
1178 case GB_TIMES_opcode :
1179
1180 switch (zcode)
1181 {
1182 case GB_INT8_code : return (GxB_TIMES_TIMES_INT8 ) ;
1183 case GB_UINT8_code : return (GxB_TIMES_TIMES_UINT8 ) ;
1184 case GB_INT16_code : return (GxB_TIMES_TIMES_INT16 ) ;
1185 case GB_UINT16_code: return (GxB_TIMES_TIMES_UINT16 ) ;
1186 case GB_INT32_code : return (GxB_TIMES_TIMES_INT32 ) ;
1187 case GB_UINT32_code: return (GxB_TIMES_TIMES_UINT32 ) ;
1188 case GB_INT64_code : return (GxB_TIMES_TIMES_INT64 ) ;
1189 case GB_UINT64_code: return (GxB_TIMES_TIMES_UINT64 ) ;
1190 case GB_FP32_code : return (GxB_TIMES_TIMES_FP32 ) ;
1191 case GB_FP64_code : return (GxB_TIMES_TIMES_FP64 ) ;
1192 default : ;
1193 }
1194 break ;
1195
1196 case GB_ANY_opcode :
1197
1198 switch (zcode)
1199 {
1200 case GB_INT8_code : return (GxB_ANY_TIMES_INT8 ) ;
1201 case GB_UINT8_code : return (GxB_ANY_TIMES_UINT8 ) ;
1202 case GB_INT16_code : return (GxB_ANY_TIMES_INT16 ) ;
1203 case GB_UINT16_code: return (GxB_ANY_TIMES_UINT16 ) ;
1204 case GB_INT32_code : return (GxB_ANY_TIMES_INT32 ) ;
1205 case GB_UINT32_code: return (GxB_ANY_TIMES_UINT32 ) ;
1206 case GB_INT64_code : return (GxB_ANY_TIMES_INT64 ) ;
1207 case GB_UINT64_code: return (GxB_ANY_TIMES_UINT64 ) ;
1208 case GB_FP32_code : return (GxB_ANY_TIMES_FP32 ) ;
1209 case GB_FP64_code : return (GxB_ANY_TIMES_FP64 ) ;
1210 default : ;
1211 }
1212 break ;
1213
1214 default : ;
1215 }
1216 break ;
1217
1218 case GB_DIV_opcode : // with (5 monoids) x (10 nonboolean types)
1219
1220 switch (add_opcode)
1221 {
1222
1223 case GB_MIN_opcode :
1224
1225 switch (zcode)
1226 {
1227 case GB_INT8_code : return (GxB_MIN_DIV_INT8 ) ;
1228 case GB_UINT8_code : return (GxB_MIN_DIV_UINT8 ) ;
1229 case GB_INT16_code : return (GxB_MIN_DIV_INT16 ) ;
1230 case GB_UINT16_code: return (GxB_MIN_DIV_UINT16 ) ;
1231 case GB_INT32_code : return (GxB_MIN_DIV_INT32 ) ;
1232 case GB_UINT32_code: return (GxB_MIN_DIV_UINT32 ) ;
1233 case GB_INT64_code : return (GxB_MIN_DIV_INT64 ) ;
1234 case GB_UINT64_code: return (GxB_MIN_DIV_UINT64 ) ;
1235 case GB_FP32_code : return (GxB_MIN_DIV_FP32 ) ;
1236 case GB_FP64_code : return (GxB_MIN_DIV_FP64 ) ;
1237 default : ;
1238 }
1239 break ;
1240
1241 case GB_MAX_opcode :
1242
1243 switch (zcode)
1244 {
1245 case GB_INT8_code : return (GxB_MAX_DIV_INT8 ) ;
1246 case GB_UINT8_code : return (GxB_MAX_DIV_UINT8 ) ;
1247 case GB_INT16_code : return (GxB_MAX_DIV_INT16 ) ;
1248 case GB_UINT16_code: return (GxB_MAX_DIV_UINT16 ) ;
1249 case GB_INT32_code : return (GxB_MAX_DIV_INT32 ) ;
1250 case GB_UINT32_code: return (GxB_MAX_DIV_UINT32 ) ;
1251 case GB_INT64_code : return (GxB_MAX_DIV_INT64 ) ;
1252 case GB_UINT64_code: return (GxB_MAX_DIV_UINT64 ) ;
1253 case GB_FP32_code : return (GxB_MAX_DIV_FP32 ) ;
1254 case GB_FP64_code : return (GxB_MAX_DIV_FP64 ) ;
1255 default : ;
1256 }
1257 break ;
1258
1259 case GB_PLUS_opcode :
1260
1261 switch (zcode)
1262 {
1263 case GB_INT8_code : return (GxB_PLUS_DIV_INT8 ) ;
1264 case GB_UINT8_code : return (GxB_PLUS_DIV_UINT8 ) ;
1265 case GB_INT16_code : return (GxB_PLUS_DIV_INT16 ) ;
1266 case GB_UINT16_code: return (GxB_PLUS_DIV_UINT16 ) ;
1267 case GB_INT32_code : return (GxB_PLUS_DIV_INT32 ) ;
1268 case GB_UINT32_code: return (GxB_PLUS_DIV_UINT32 ) ;
1269 case GB_INT64_code : return (GxB_PLUS_DIV_INT64 ) ;
1270 case GB_UINT64_code: return (GxB_PLUS_DIV_UINT64 ) ;
1271 case GB_FP32_code : return (GxB_PLUS_DIV_FP32 ) ;
1272 case GB_FP64_code : return (GxB_PLUS_DIV_FP64 ) ;
1273 default : ;
1274 }
1275 break ;
1276
1277 case GB_TIMES_opcode :
1278
1279 switch (zcode)
1280 {
1281 case GB_INT8_code : return (GxB_TIMES_DIV_INT8 ) ;
1282 case GB_UINT8_code : return (GxB_TIMES_DIV_UINT8 ) ;
1283 case GB_INT16_code : return (GxB_TIMES_DIV_INT16 ) ;
1284 case GB_UINT16_code: return (GxB_TIMES_DIV_UINT16 ) ;
1285 case GB_INT32_code : return (GxB_TIMES_DIV_INT32 ) ;
1286 case GB_UINT32_code: return (GxB_TIMES_DIV_UINT32 ) ;
1287 case GB_INT64_code : return (GxB_TIMES_DIV_INT64 ) ;
1288 case GB_UINT64_code: return (GxB_TIMES_DIV_UINT64 ) ;
1289 case GB_FP32_code : return (GxB_TIMES_DIV_FP32 ) ;
1290 case GB_FP64_code : return (GxB_TIMES_DIV_FP64 ) ;
1291 default : ;
1292 }
1293 break ;
1294
1295 case GB_ANY_opcode :
1296
1297 switch (zcode)
1298 {
1299 case GB_INT8_code : return (GxB_ANY_DIV_INT8 ) ;
1300 case GB_UINT8_code : return (GxB_ANY_DIV_UINT8 ) ;
1301 case GB_INT16_code : return (GxB_ANY_DIV_INT16 ) ;
1302 case GB_UINT16_code: return (GxB_ANY_DIV_UINT16 ) ;
1303 case GB_INT32_code : return (GxB_ANY_DIV_INT32 ) ;
1304 case GB_UINT32_code: return (GxB_ANY_DIV_UINT32 ) ;
1305 case GB_INT64_code : return (GxB_ANY_DIV_INT64 ) ;
1306 case GB_UINT64_code: return (GxB_ANY_DIV_UINT64 ) ;
1307 case GB_FP32_code : return (GxB_ANY_DIV_FP32 ) ;
1308 case GB_FP64_code : return (GxB_ANY_DIV_FP64 ) ;
1309 default : ;
1310 }
1311 break ;
1312
1313 default : ;
1314 }
1315 break ;
1316
1317 case GB_RDIV_opcode : // with (5 monoids) x (10 nonboolean types)
1318
1319 switch (add_opcode)
1320 {
1321
1322 case GB_MIN_opcode :
1323
1324 switch (zcode)
1325 {
1326 case GB_INT8_code : return (GxB_MIN_RDIV_INT8 ) ;
1327 case GB_UINT8_code : return (GxB_MIN_RDIV_UINT8 ) ;
1328 case GB_INT16_code : return (GxB_MIN_RDIV_INT16 ) ;
1329 case GB_UINT16_code: return (GxB_MIN_RDIV_UINT16 ) ;
1330 case GB_INT32_code : return (GxB_MIN_RDIV_INT32 ) ;
1331 case GB_UINT32_code: return (GxB_MIN_RDIV_UINT32 ) ;
1332 case GB_INT64_code : return (GxB_MIN_RDIV_INT64 ) ;
1333 case GB_UINT64_code: return (GxB_MIN_RDIV_UINT64 ) ;
1334 case GB_FP32_code : return (GxB_MIN_RDIV_FP32 ) ;
1335 case GB_FP64_code : return (GxB_MIN_RDIV_FP64 ) ;
1336 default : ;
1337 }
1338 break ;
1339
1340 case GB_MAX_opcode :
1341
1342 switch (zcode)
1343 {
1344 case GB_INT8_code : return (GxB_MAX_RDIV_INT8 ) ;
1345 case GB_UINT8_code : return (GxB_MAX_RDIV_UINT8 ) ;
1346 case GB_INT16_code : return (GxB_MAX_RDIV_INT16 ) ;
1347 case GB_UINT16_code: return (GxB_MAX_RDIV_UINT16 ) ;
1348 case GB_INT32_code : return (GxB_MAX_RDIV_INT32 ) ;
1349 case GB_UINT32_code: return (GxB_MAX_RDIV_UINT32 ) ;
1350 case GB_INT64_code : return (GxB_MAX_RDIV_INT64 ) ;
1351 case GB_UINT64_code: return (GxB_MAX_RDIV_UINT64 ) ;
1352 case GB_FP32_code : return (GxB_MAX_RDIV_FP32 ) ;
1353 case GB_FP64_code : return (GxB_MAX_RDIV_FP64 ) ;
1354 default : ;
1355 }
1356 break ;
1357
1358 case GB_PLUS_opcode :
1359
1360 switch (zcode)
1361 {
1362 case GB_INT8_code : return (GxB_PLUS_RDIV_INT8 ) ;
1363 case GB_UINT8_code : return (GxB_PLUS_RDIV_UINT8 ) ;
1364 case GB_INT16_code : return (GxB_PLUS_RDIV_INT16 ) ;
1365 case GB_UINT16_code: return (GxB_PLUS_RDIV_UINT16 ) ;
1366 case GB_INT32_code : return (GxB_PLUS_RDIV_INT32 ) ;
1367 case GB_UINT32_code: return (GxB_PLUS_RDIV_UINT32 ) ;
1368 case GB_INT64_code : return (GxB_PLUS_RDIV_INT64 ) ;
1369 case GB_UINT64_code: return (GxB_PLUS_RDIV_UINT64 ) ;
1370 case GB_FP32_code : return (GxB_PLUS_RDIV_FP32 ) ;
1371 case GB_FP64_code : return (GxB_PLUS_RDIV_FP64 ) ;
1372 default : ;
1373 }
1374 break ;
1375
1376 case GB_TIMES_opcode :
1377
1378 switch (zcode)
1379 {
1380 case GB_INT8_code : return (GxB_TIMES_RDIV_INT8 ) ;
1381 case GB_UINT8_code : return (GxB_TIMES_RDIV_UINT8 ) ;
1382 case GB_INT16_code : return (GxB_TIMES_RDIV_INT16 ) ;
1383 case GB_UINT16_code: return (GxB_TIMES_RDIV_UINT16 ) ;
1384 case GB_INT32_code : return (GxB_TIMES_RDIV_INT32 ) ;
1385 case GB_UINT32_code: return (GxB_TIMES_RDIV_UINT32 ) ;
1386 case GB_INT64_code : return (GxB_TIMES_RDIV_INT64 ) ;
1387 case GB_UINT64_code: return (GxB_TIMES_RDIV_UINT64 ) ;
1388 case GB_FP32_code : return (GxB_TIMES_RDIV_FP32 ) ;
1389 case GB_FP64_code : return (GxB_TIMES_RDIV_FP64 ) ;
1390 default : ;
1391 }
1392 break ;
1393
1394 case GB_ANY_opcode :
1395
1396 switch (zcode)
1397 {
1398 case GB_INT8_code : return (GxB_ANY_RDIV_INT8 ) ;
1399 case GB_UINT8_code : return (GxB_ANY_RDIV_UINT8 ) ;
1400 case GB_INT16_code : return (GxB_ANY_RDIV_INT16 ) ;
1401 case GB_UINT16_code: return (GxB_ANY_RDIV_UINT16 ) ;
1402 case GB_INT32_code : return (GxB_ANY_RDIV_INT32 ) ;
1403 case GB_UINT32_code: return (GxB_ANY_RDIV_UINT32 ) ;
1404 case GB_INT64_code : return (GxB_ANY_RDIV_INT64 ) ;
1405 case GB_UINT64_code: return (GxB_ANY_RDIV_UINT64 ) ;
1406 case GB_FP32_code : return (GxB_ANY_RDIV_FP32 ) ;
1407 case GB_FP64_code : return (GxB_ANY_RDIV_FP64 ) ;
1408 default : ;
1409 }
1410 break ;
1411
1412 default : ;
1413 }
1414 break ;
1415
1416 case GB_ISEQ_opcode : // with (5 monoids) x (10 nonboolean types)
1417
1418 switch (add_opcode)
1419 {
1420
1421 case GB_MIN_opcode :
1422
1423 switch (zcode)
1424 {
1425 case GB_INT8_code : return (GxB_MIN_ISEQ_INT8 ) ;
1426 case GB_UINT8_code : return (GxB_MIN_ISEQ_UINT8 ) ;
1427 case GB_INT16_code : return (GxB_MIN_ISEQ_INT16 ) ;
1428 case GB_UINT16_code: return (GxB_MIN_ISEQ_UINT16 ) ;
1429 case GB_INT32_code : return (GxB_MIN_ISEQ_INT32 ) ;
1430 case GB_UINT32_code: return (GxB_MIN_ISEQ_UINT32 ) ;
1431 case GB_INT64_code : return (GxB_MIN_ISEQ_INT64 ) ;
1432 case GB_UINT64_code: return (GxB_MIN_ISEQ_UINT64 ) ;
1433 case GB_FP32_code : return (GxB_MIN_ISEQ_FP32 ) ;
1434 case GB_FP64_code : return (GxB_MIN_ISEQ_FP64 ) ;
1435 default : ;
1436 }
1437 break ;
1438
1439 case GB_MAX_opcode :
1440
1441 switch (zcode)
1442 {
1443 case GB_INT8_code : return (GxB_MAX_ISEQ_INT8 ) ;
1444 case GB_UINT8_code : return (GxB_MAX_ISEQ_UINT8 ) ;
1445 case GB_INT16_code : return (GxB_MAX_ISEQ_INT16 ) ;
1446 case GB_UINT16_code: return (GxB_MAX_ISEQ_UINT16 ) ;
1447 case GB_INT32_code : return (GxB_MAX_ISEQ_INT32 ) ;
1448 case GB_UINT32_code: return (GxB_MAX_ISEQ_UINT32 ) ;
1449 case GB_INT64_code : return (GxB_MAX_ISEQ_INT64 ) ;
1450 case GB_UINT64_code: return (GxB_MAX_ISEQ_UINT64 ) ;
1451 case GB_FP32_code : return (GxB_MAX_ISEQ_FP32 ) ;
1452 case GB_FP64_code : return (GxB_MAX_ISEQ_FP64 ) ;
1453 default : ;
1454 }
1455 break ;
1456
1457 case GB_PLUS_opcode :
1458
1459 switch (zcode)
1460 {
1461 case GB_INT8_code : return (GxB_PLUS_ISEQ_INT8 ) ;
1462 case GB_UINT8_code : return (GxB_PLUS_ISEQ_UINT8 ) ;
1463 case GB_INT16_code : return (GxB_PLUS_ISEQ_INT16 ) ;
1464 case GB_UINT16_code: return (GxB_PLUS_ISEQ_UINT16 ) ;
1465 case GB_INT32_code : return (GxB_PLUS_ISEQ_INT32 ) ;
1466 case GB_UINT32_code: return (GxB_PLUS_ISEQ_UINT32 ) ;
1467 case GB_INT64_code : return (GxB_PLUS_ISEQ_INT64 ) ;
1468 case GB_UINT64_code: return (GxB_PLUS_ISEQ_UINT64 ) ;
1469 case GB_FP32_code : return (GxB_PLUS_ISEQ_FP32 ) ;
1470 case GB_FP64_code : return (GxB_PLUS_ISEQ_FP64 ) ;
1471 default : ;
1472 }
1473 break ;
1474
1475 case GB_TIMES_opcode :
1476
1477 switch (zcode)
1478 {
1479 case GB_INT8_code : return (GxB_TIMES_ISEQ_INT8 ) ;
1480 case GB_UINT8_code : return (GxB_TIMES_ISEQ_UINT8 ) ;
1481 case GB_INT16_code : return (GxB_TIMES_ISEQ_INT16 ) ;
1482 case GB_UINT16_code: return (GxB_TIMES_ISEQ_UINT16 ) ;
1483 case GB_INT32_code : return (GxB_TIMES_ISEQ_INT32 ) ;
1484 case GB_UINT32_code: return (GxB_TIMES_ISEQ_UINT32 ) ;
1485 case GB_INT64_code : return (GxB_TIMES_ISEQ_INT64 ) ;
1486 case GB_UINT64_code: return (GxB_TIMES_ISEQ_UINT64 ) ;
1487 case GB_FP32_code : return (GxB_TIMES_ISEQ_FP32 ) ;
1488 case GB_FP64_code : return (GxB_TIMES_ISEQ_FP64 ) ;
1489 default : ;
1490 }
1491 break ;
1492
1493 case GB_ANY_opcode :
1494
1495 switch (zcode)
1496 {
1497 case GB_INT8_code : return (GxB_ANY_ISEQ_INT8 ) ;
1498 case GB_UINT8_code : return (GxB_ANY_ISEQ_UINT8 ) ;
1499 case GB_INT16_code : return (GxB_ANY_ISEQ_INT16 ) ;
1500 case GB_UINT16_code: return (GxB_ANY_ISEQ_UINT16 ) ;
1501 case GB_INT32_code : return (GxB_ANY_ISEQ_INT32 ) ;
1502 case GB_UINT32_code: return (GxB_ANY_ISEQ_UINT32 ) ;
1503 case GB_INT64_code : return (GxB_ANY_ISEQ_INT64 ) ;
1504 case GB_UINT64_code: return (GxB_ANY_ISEQ_UINT64 ) ;
1505 case GB_FP32_code : return (GxB_ANY_ISEQ_FP32 ) ;
1506 case GB_FP64_code : return (GxB_ANY_ISEQ_FP64 ) ;
1507 default : ;
1508 }
1509 break ;
1510
1511 default : ;
1512 }
1513 break ;
1514
1515 case GB_ISNE_opcode : // with (5 monoids) x (10 nonboolean types)
1516
1517 switch (add_opcode)
1518 {
1519
1520 case GB_MIN_opcode :
1521
1522 switch (zcode)
1523 {
1524 case GB_INT8_code : return (GxB_MIN_ISNE_INT8 ) ;
1525 case GB_UINT8_code : return (GxB_MIN_ISNE_UINT8 ) ;
1526 case GB_INT16_code : return (GxB_MIN_ISNE_INT16 ) ;
1527 case GB_UINT16_code: return (GxB_MIN_ISNE_UINT16 ) ;
1528 case GB_INT32_code : return (GxB_MIN_ISNE_INT32 ) ;
1529 case GB_UINT32_code: return (GxB_MIN_ISNE_UINT32 ) ;
1530 case GB_INT64_code : return (GxB_MIN_ISNE_INT64 ) ;
1531 case GB_UINT64_code: return (GxB_MIN_ISNE_UINT64 ) ;
1532 case GB_FP32_code : return (GxB_MIN_ISNE_FP32 ) ;
1533 case GB_FP64_code : return (GxB_MIN_ISNE_FP64 ) ;
1534 default : ;
1535 }
1536 break ;
1537
1538 case GB_MAX_opcode :
1539
1540 switch (zcode)
1541 {
1542 case GB_INT8_code : return (GxB_MAX_ISNE_INT8 ) ;
1543 case GB_UINT8_code : return (GxB_MAX_ISNE_UINT8 ) ;
1544 case GB_INT16_code : return (GxB_MAX_ISNE_INT16 ) ;
1545 case GB_UINT16_code: return (GxB_MAX_ISNE_UINT16 ) ;
1546 case GB_INT32_code : return (GxB_MAX_ISNE_INT32 ) ;
1547 case GB_UINT32_code: return (GxB_MAX_ISNE_UINT32 ) ;
1548 case GB_INT64_code : return (GxB_MAX_ISNE_INT64 ) ;
1549 case GB_UINT64_code: return (GxB_MAX_ISNE_UINT64 ) ;
1550 case GB_FP32_code : return (GxB_MAX_ISNE_FP32 ) ;
1551 case GB_FP64_code : return (GxB_MAX_ISNE_FP64 ) ;
1552 default : ;
1553 }
1554 break ;
1555
1556 case GB_PLUS_opcode :
1557
1558 switch (zcode)
1559 {
1560 case GB_INT8_code : return (GxB_PLUS_ISNE_INT8 ) ;
1561 case GB_UINT8_code : return (GxB_PLUS_ISNE_UINT8 ) ;
1562 case GB_INT16_code : return (GxB_PLUS_ISNE_INT16 ) ;
1563 case GB_UINT16_code: return (GxB_PLUS_ISNE_UINT16 ) ;
1564 case GB_INT32_code : return (GxB_PLUS_ISNE_INT32 ) ;
1565 case GB_UINT32_code: return (GxB_PLUS_ISNE_UINT32 ) ;
1566 case GB_INT64_code : return (GxB_PLUS_ISNE_INT64 ) ;
1567 case GB_UINT64_code: return (GxB_PLUS_ISNE_UINT64 ) ;
1568 case GB_FP32_code : return (GxB_PLUS_ISNE_FP32 ) ;
1569 case GB_FP64_code : return (GxB_PLUS_ISNE_FP64 ) ;
1570 default : ;
1571 }
1572 break ;
1573
1574 case GB_TIMES_opcode :
1575
1576 switch (zcode)
1577 {
1578 case GB_INT8_code : return (GxB_TIMES_ISNE_INT8 ) ;
1579 case GB_UINT8_code : return (GxB_TIMES_ISNE_UINT8 ) ;
1580 case GB_INT16_code : return (GxB_TIMES_ISNE_INT16 ) ;
1581 case GB_UINT16_code: return (GxB_TIMES_ISNE_UINT16 ) ;
1582 case GB_INT32_code : return (GxB_TIMES_ISNE_INT32 ) ;
1583 case GB_UINT32_code: return (GxB_TIMES_ISNE_UINT32 ) ;
1584 case GB_INT64_code : return (GxB_TIMES_ISNE_INT64 ) ;
1585 case GB_UINT64_code: return (GxB_TIMES_ISNE_UINT64 ) ;
1586 case GB_FP32_code : return (GxB_TIMES_ISNE_FP32 ) ;
1587 case GB_FP64_code : return (GxB_TIMES_ISNE_FP64 ) ;
1588 default : ;
1589 }
1590 break ;
1591
1592 case GB_ANY_opcode :
1593
1594 switch (zcode)
1595 {
1596 case GB_INT8_code : return (GxB_ANY_ISNE_INT8 ) ;
1597 case GB_UINT8_code : return (GxB_ANY_ISNE_UINT8 ) ;
1598 case GB_INT16_code : return (GxB_ANY_ISNE_INT16 ) ;
1599 case GB_UINT16_code: return (GxB_ANY_ISNE_UINT16 ) ;
1600 case GB_INT32_code : return (GxB_ANY_ISNE_INT32 ) ;
1601 case GB_UINT32_code: return (GxB_ANY_ISNE_UINT32 ) ;
1602 case GB_INT64_code : return (GxB_ANY_ISNE_INT64 ) ;
1603 case GB_UINT64_code: return (GxB_ANY_ISNE_UINT64 ) ;
1604 case GB_FP32_code : return (GxB_ANY_ISNE_FP32 ) ;
1605 case GB_FP64_code : return (GxB_ANY_ISNE_FP64 ) ;
1606 default : ;
1607 }
1608 break ;
1609
1610 default : ;
1611 }
1612 break ;
1613
1614 case GB_ISGT_opcode : // with (5 monoids) x (10 nonboolean types)
1615
1616 switch (add_opcode)
1617 {
1618
1619 case GB_MIN_opcode :
1620
1621 switch (zcode)
1622 {
1623 case GB_INT8_code : return (GxB_MIN_ISGT_INT8 ) ;
1624 case GB_UINT8_code : return (GxB_MIN_ISGT_UINT8 ) ;
1625 case GB_INT16_code : return (GxB_MIN_ISGT_INT16 ) ;
1626 case GB_UINT16_code: return (GxB_MIN_ISGT_UINT16 ) ;
1627 case GB_INT32_code : return (GxB_MIN_ISGT_INT32 ) ;
1628 case GB_UINT32_code: return (GxB_MIN_ISGT_UINT32 ) ;
1629 case GB_INT64_code : return (GxB_MIN_ISGT_INT64 ) ;
1630 case GB_UINT64_code: return (GxB_MIN_ISGT_UINT64 ) ;
1631 case GB_FP32_code : return (GxB_MIN_ISGT_FP32 ) ;
1632 case GB_FP64_code : return (GxB_MIN_ISGT_FP64 ) ;
1633 default : ;
1634 }
1635 break ;
1636
1637 case GB_MAX_opcode :
1638
1639 switch (zcode)
1640 {
1641 case GB_INT8_code : return (GxB_MAX_ISGT_INT8 ) ;
1642 case GB_UINT8_code : return (GxB_MAX_ISGT_UINT8 ) ;
1643 case GB_INT16_code : return (GxB_MAX_ISGT_INT16 ) ;
1644 case GB_UINT16_code: return (GxB_MAX_ISGT_UINT16 ) ;
1645 case GB_INT32_code : return (GxB_MAX_ISGT_INT32 ) ;
1646 case GB_UINT32_code: return (GxB_MAX_ISGT_UINT32 ) ;
1647 case GB_INT64_code : return (GxB_MAX_ISGT_INT64 ) ;
1648 case GB_UINT64_code: return (GxB_MAX_ISGT_UINT64 ) ;
1649 case GB_FP32_code : return (GxB_MAX_ISGT_FP32 ) ;
1650 case GB_FP64_code : return (GxB_MAX_ISGT_FP64 ) ;
1651 default : ;
1652 }
1653 break ;
1654
1655 case GB_PLUS_opcode :
1656
1657 switch (zcode)
1658 {
1659 case GB_INT8_code : return (GxB_PLUS_ISGT_INT8 ) ;
1660 case GB_UINT8_code : return (GxB_PLUS_ISGT_UINT8 ) ;
1661 case GB_INT16_code : return (GxB_PLUS_ISGT_INT16 ) ;
1662 case GB_UINT16_code: return (GxB_PLUS_ISGT_UINT16 ) ;
1663 case GB_INT32_code : return (GxB_PLUS_ISGT_INT32 ) ;
1664 case GB_UINT32_code: return (GxB_PLUS_ISGT_UINT32 ) ;
1665 case GB_INT64_code : return (GxB_PLUS_ISGT_INT64 ) ;
1666 case GB_UINT64_code: return (GxB_PLUS_ISGT_UINT64 ) ;
1667 case GB_FP32_code : return (GxB_PLUS_ISGT_FP32 ) ;
1668 case GB_FP64_code : return (GxB_PLUS_ISGT_FP64 ) ;
1669 default : ;
1670 }
1671 break ;
1672
1673 case GB_TIMES_opcode :
1674
1675 switch (zcode)
1676 {
1677 case GB_INT8_code : return (GxB_TIMES_ISGT_INT8 ) ;
1678 case GB_UINT8_code : return (GxB_TIMES_ISGT_UINT8 ) ;
1679 case GB_INT16_code : return (GxB_TIMES_ISGT_INT16 ) ;
1680 case GB_UINT16_code: return (GxB_TIMES_ISGT_UINT16 ) ;
1681 case GB_INT32_code : return (GxB_TIMES_ISGT_INT32 ) ;
1682 case GB_UINT32_code: return (GxB_TIMES_ISGT_UINT32 ) ;
1683 case GB_INT64_code : return (GxB_TIMES_ISGT_INT64 ) ;
1684 case GB_UINT64_code: return (GxB_TIMES_ISGT_UINT64 ) ;
1685 case GB_FP32_code : return (GxB_TIMES_ISGT_FP32 ) ;
1686 case GB_FP64_code : return (GxB_TIMES_ISGT_FP64 ) ;
1687 default : ;
1688 }
1689 break ;
1690
1691 case GB_ANY_opcode :
1692
1693 switch (zcode)
1694 {
1695 case GB_INT8_code : return (GxB_ANY_ISGT_INT8 ) ;
1696 case GB_UINT8_code : return (GxB_ANY_ISGT_UINT8 ) ;
1697 case GB_INT16_code : return (GxB_ANY_ISGT_INT16 ) ;
1698 case GB_UINT16_code: return (GxB_ANY_ISGT_UINT16 ) ;
1699 case GB_INT32_code : return (GxB_ANY_ISGT_INT32 ) ;
1700 case GB_UINT32_code: return (GxB_ANY_ISGT_UINT32 ) ;
1701 case GB_INT64_code : return (GxB_ANY_ISGT_INT64 ) ;
1702 case GB_UINT64_code: return (GxB_ANY_ISGT_UINT64 ) ;
1703 case GB_FP32_code : return (GxB_ANY_ISGT_FP32 ) ;
1704 case GB_FP64_code : return (GxB_ANY_ISGT_FP64 ) ;
1705 default : ;
1706 }
1707 break ;
1708
1709 default : ;
1710 }
1711 break ;
1712
1713 case GB_ISLT_opcode : // with (5 monoids) x (10 nonboolean types)
1714
1715 switch (add_opcode)
1716 {
1717
1718 case GB_MIN_opcode :
1719
1720 switch (zcode)
1721 {
1722 case GB_INT8_code : return (GxB_MIN_ISLT_INT8 ) ;
1723 case GB_UINT8_code : return (GxB_MIN_ISLT_UINT8 ) ;
1724 case GB_INT16_code : return (GxB_MIN_ISLT_INT16 ) ;
1725 case GB_UINT16_code: return (GxB_MIN_ISLT_UINT16 ) ;
1726 case GB_INT32_code : return (GxB_MIN_ISLT_INT32 ) ;
1727 case GB_UINT32_code: return (GxB_MIN_ISLT_UINT32 ) ;
1728 case GB_INT64_code : return (GxB_MIN_ISLT_INT64 ) ;
1729 case GB_UINT64_code: return (GxB_MIN_ISLT_UINT64 ) ;
1730 case GB_FP32_code : return (GxB_MIN_ISLT_FP32 ) ;
1731 case GB_FP64_code : return (GxB_MIN_ISLT_FP64 ) ;
1732 default : ;
1733 }
1734 break ;
1735
1736 case GB_MAX_opcode :
1737
1738 switch (zcode)
1739 {
1740 case GB_INT8_code : return (GxB_MAX_ISLT_INT8 ) ;
1741 case GB_UINT8_code : return (GxB_MAX_ISLT_UINT8 ) ;
1742 case GB_INT16_code : return (GxB_MAX_ISLT_INT16 ) ;
1743 case GB_UINT16_code: return (GxB_MAX_ISLT_UINT16 ) ;
1744 case GB_INT32_code : return (GxB_MAX_ISLT_INT32 ) ;
1745 case GB_UINT32_code: return (GxB_MAX_ISLT_UINT32 ) ;
1746 case GB_INT64_code : return (GxB_MAX_ISLT_INT64 ) ;
1747 case GB_UINT64_code: return (GxB_MAX_ISLT_UINT64 ) ;
1748 case GB_FP32_code : return (GxB_MAX_ISLT_FP32 ) ;
1749 case GB_FP64_code : return (GxB_MAX_ISLT_FP64 ) ;
1750 default : ;
1751 }
1752 break ;
1753
1754 case GB_PLUS_opcode :
1755
1756 switch (zcode)
1757 {
1758 case GB_INT8_code : return (GxB_PLUS_ISLT_INT8 ) ;
1759 case GB_UINT8_code : return (GxB_PLUS_ISLT_UINT8 ) ;
1760 case GB_INT16_code : return (GxB_PLUS_ISLT_INT16 ) ;
1761 case GB_UINT16_code: return (GxB_PLUS_ISLT_UINT16 ) ;
1762 case GB_INT32_code : return (GxB_PLUS_ISLT_INT32 ) ;
1763 case GB_UINT32_code: return (GxB_PLUS_ISLT_UINT32 ) ;
1764 case GB_INT64_code : return (GxB_PLUS_ISLT_INT64 ) ;
1765 case GB_UINT64_code: return (GxB_PLUS_ISLT_UINT64 ) ;
1766 case GB_FP32_code : return (GxB_PLUS_ISLT_FP32 ) ;
1767 case GB_FP64_code : return (GxB_PLUS_ISLT_FP64 ) ;
1768 default : ;
1769 }
1770 break ;
1771
1772 case GB_TIMES_opcode :
1773
1774 switch (zcode)
1775 {
1776 case GB_INT8_code : return (GxB_TIMES_ISLT_INT8 ) ;
1777 case GB_UINT8_code : return (GxB_TIMES_ISLT_UINT8 ) ;
1778 case GB_INT16_code : return (GxB_TIMES_ISLT_INT16 ) ;
1779 case GB_UINT16_code: return (GxB_TIMES_ISLT_UINT16 ) ;
1780 case GB_INT32_code : return (GxB_TIMES_ISLT_INT32 ) ;
1781 case GB_UINT32_code: return (GxB_TIMES_ISLT_UINT32 ) ;
1782 case GB_INT64_code : return (GxB_TIMES_ISLT_INT64 ) ;
1783 case GB_UINT64_code: return (GxB_TIMES_ISLT_UINT64 ) ;
1784 case GB_FP32_code : return (GxB_TIMES_ISLT_FP32 ) ;
1785 case GB_FP64_code : return (GxB_TIMES_ISLT_FP64 ) ;
1786 default : ;
1787 }
1788 break ;
1789
1790 case GB_ANY_opcode :
1791
1792 switch (zcode)
1793 {
1794 case GB_INT8_code : return (GxB_ANY_ISLT_INT8 ) ;
1795 case GB_UINT8_code : return (GxB_ANY_ISLT_UINT8 ) ;
1796 case GB_INT16_code : return (GxB_ANY_ISLT_INT16 ) ;
1797 case GB_UINT16_code: return (GxB_ANY_ISLT_UINT16 ) ;
1798 case GB_INT32_code : return (GxB_ANY_ISLT_INT32 ) ;
1799 case GB_UINT32_code: return (GxB_ANY_ISLT_UINT32 ) ;
1800 case GB_INT64_code : return (GxB_ANY_ISLT_INT64 ) ;
1801 case GB_UINT64_code: return (GxB_ANY_ISLT_UINT64 ) ;
1802 case GB_FP32_code : return (GxB_ANY_ISLT_FP32 ) ;
1803 case GB_FP64_code : return (GxB_ANY_ISLT_FP64 ) ;
1804 default : ;
1805 }
1806 break ;
1807
1808 default : ;
1809 }
1810 break ;
1811
1812 case GB_ISGE_opcode : // with (5 monoids) x (10 nonboolean types)
1813
1814 switch (add_opcode)
1815 {
1816
1817 case GB_MIN_opcode :
1818
1819 switch (zcode)
1820 {
1821 case GB_INT8_code : return (GxB_MIN_ISGE_INT8 ) ;
1822 case GB_UINT8_code : return (GxB_MIN_ISGE_UINT8 ) ;
1823 case GB_INT16_code : return (GxB_MIN_ISGE_INT16 ) ;
1824 case GB_UINT16_code: return (GxB_MIN_ISGE_UINT16 ) ;
1825 case GB_INT32_code : return (GxB_MIN_ISGE_INT32 ) ;
1826 case GB_UINT32_code: return (GxB_MIN_ISGE_UINT32 ) ;
1827 case GB_INT64_code : return (GxB_MIN_ISGE_INT64 ) ;
1828 case GB_UINT64_code: return (GxB_MIN_ISGE_UINT64 ) ;
1829 case GB_FP32_code : return (GxB_MIN_ISGE_FP32 ) ;
1830 case GB_FP64_code : return (GxB_MIN_ISGE_FP64 ) ;
1831 default : ;
1832 }
1833 break ;
1834
1835 case GB_MAX_opcode :
1836
1837 switch (zcode)
1838 {
1839 case GB_INT8_code : return (GxB_MAX_ISGE_INT8 ) ;
1840 case GB_UINT8_code : return (GxB_MAX_ISGE_UINT8 ) ;
1841 case GB_INT16_code : return (GxB_MAX_ISGE_INT16 ) ;
1842 case GB_UINT16_code: return (GxB_MAX_ISGE_UINT16 ) ;
1843 case GB_INT32_code : return (GxB_MAX_ISGE_INT32 ) ;
1844 case GB_UINT32_code: return (GxB_MAX_ISGE_UINT32 ) ;
1845 case GB_INT64_code : return (GxB_MAX_ISGE_INT64 ) ;
1846 case GB_UINT64_code: return (GxB_MAX_ISGE_UINT64 ) ;
1847 case GB_FP32_code : return (GxB_MAX_ISGE_FP32 ) ;
1848 case GB_FP64_code : return (GxB_MAX_ISGE_FP64 ) ;
1849 default : ;
1850 }
1851 break ;
1852
1853 case GB_PLUS_opcode :
1854
1855 switch (zcode)
1856 {
1857 case GB_INT8_code : return (GxB_PLUS_ISGE_INT8 ) ;
1858 case GB_UINT8_code : return (GxB_PLUS_ISGE_UINT8 ) ;
1859 case GB_INT16_code : return (GxB_PLUS_ISGE_INT16 ) ;
1860 case GB_UINT16_code: return (GxB_PLUS_ISGE_UINT16 ) ;
1861 case GB_INT32_code : return (GxB_PLUS_ISGE_INT32 ) ;
1862 case GB_UINT32_code: return (GxB_PLUS_ISGE_UINT32 ) ;
1863 case GB_INT64_code : return (GxB_PLUS_ISGE_INT64 ) ;
1864 case GB_UINT64_code: return (GxB_PLUS_ISGE_UINT64 ) ;
1865 case GB_FP32_code : return (GxB_PLUS_ISGE_FP32 ) ;
1866 case GB_FP64_code : return (GxB_PLUS_ISGE_FP64 ) ;
1867 default : ;
1868 }
1869 break ;
1870
1871 case GB_TIMES_opcode :
1872
1873 switch (zcode)
1874 {
1875 case GB_INT8_code : return (GxB_TIMES_ISGE_INT8 ) ;
1876 case GB_UINT8_code : return (GxB_TIMES_ISGE_UINT8 ) ;
1877 case GB_INT16_code : return (GxB_TIMES_ISGE_INT16 ) ;
1878 case GB_UINT16_code: return (GxB_TIMES_ISGE_UINT16 ) ;
1879 case GB_INT32_code : return (GxB_TIMES_ISGE_INT32 ) ;
1880 case GB_UINT32_code: return (GxB_TIMES_ISGE_UINT32 ) ;
1881 case GB_INT64_code : return (GxB_TIMES_ISGE_INT64 ) ;
1882 case GB_UINT64_code: return (GxB_TIMES_ISGE_UINT64 ) ;
1883 case GB_FP32_code : return (GxB_TIMES_ISGE_FP32 ) ;
1884 case GB_FP64_code : return (GxB_TIMES_ISGE_FP64 ) ;
1885 default : ;
1886 }
1887 break ;
1888
1889 case GB_ANY_opcode :
1890
1891 switch (zcode)
1892 {
1893 case GB_INT8_code : return (GxB_ANY_ISGE_INT8 ) ;
1894 case GB_UINT8_code : return (GxB_ANY_ISGE_UINT8 ) ;
1895 case GB_INT16_code : return (GxB_ANY_ISGE_INT16 ) ;
1896 case GB_UINT16_code: return (GxB_ANY_ISGE_UINT16 ) ;
1897 case GB_INT32_code : return (GxB_ANY_ISGE_INT32 ) ;
1898 case GB_UINT32_code: return (GxB_ANY_ISGE_UINT32 ) ;
1899 case GB_INT64_code : return (GxB_ANY_ISGE_INT64 ) ;
1900 case GB_UINT64_code: return (GxB_ANY_ISGE_UINT64 ) ;
1901 case GB_FP32_code : return (GxB_ANY_ISGE_FP32 ) ;
1902 case GB_FP64_code : return (GxB_ANY_ISGE_FP64 ) ;
1903 default : ;
1904 }
1905 break ;
1906
1907 default : ;
1908 }
1909 break ;
1910
1911 case GB_ISLE_opcode : // with (5 monoids) x (10 nonboolean types)
1912
1913 switch (add_opcode)
1914 {
1915
1916 case GB_MIN_opcode :
1917
1918 switch (zcode)
1919 {
1920 case GB_INT8_code : return (GxB_MIN_ISLE_INT8 ) ;
1921 case GB_UINT8_code : return (GxB_MIN_ISLE_UINT8 ) ;
1922 case GB_INT16_code : return (GxB_MIN_ISLE_INT16 ) ;
1923 case GB_UINT16_code: return (GxB_MIN_ISLE_UINT16 ) ;
1924 case GB_INT32_code : return (GxB_MIN_ISLE_INT32 ) ;
1925 case GB_UINT32_code: return (GxB_MIN_ISLE_UINT32 ) ;
1926 case GB_INT64_code : return (GxB_MIN_ISLE_INT64 ) ;
1927 case GB_UINT64_code: return (GxB_MIN_ISLE_UINT64 ) ;
1928 case GB_FP32_code : return (GxB_MIN_ISLE_FP32 ) ;
1929 case GB_FP64_code : return (GxB_MIN_ISLE_FP64 ) ;
1930 default : ;
1931 }
1932 break ;
1933
1934 case GB_MAX_opcode :
1935
1936 switch (zcode)
1937 {
1938 case GB_INT8_code : return (GxB_MAX_ISLE_INT8 ) ;
1939 case GB_UINT8_code : return (GxB_MAX_ISLE_UINT8 ) ;
1940 case GB_INT16_code : return (GxB_MAX_ISLE_INT16 ) ;
1941 case GB_UINT16_code: return (GxB_MAX_ISLE_UINT16 ) ;
1942 case GB_INT32_code : return (GxB_MAX_ISLE_INT32 ) ;
1943 case GB_UINT32_code: return (GxB_MAX_ISLE_UINT32 ) ;
1944 case GB_INT64_code : return (GxB_MAX_ISLE_INT64 ) ;
1945 case GB_UINT64_code: return (GxB_MAX_ISLE_UINT64 ) ;
1946 case GB_FP32_code : return (GxB_MAX_ISLE_FP32 ) ;
1947 case GB_FP64_code : return (GxB_MAX_ISLE_FP64 ) ;
1948 default : ;
1949 }
1950 break ;
1951
1952 case GB_PLUS_opcode :
1953
1954 switch (zcode)
1955 {
1956 case GB_INT8_code : return (GxB_PLUS_ISLE_INT8 ) ;
1957 case GB_UINT8_code : return (GxB_PLUS_ISLE_UINT8 ) ;
1958 case GB_INT16_code : return (GxB_PLUS_ISLE_INT16 ) ;
1959 case GB_UINT16_code: return (GxB_PLUS_ISLE_UINT16 ) ;
1960 case GB_INT32_code : return (GxB_PLUS_ISLE_INT32 ) ;
1961 case GB_UINT32_code: return (GxB_PLUS_ISLE_UINT32 ) ;
1962 case GB_INT64_code : return (GxB_PLUS_ISLE_INT64 ) ;
1963 case GB_UINT64_code: return (GxB_PLUS_ISLE_UINT64 ) ;
1964 case GB_FP32_code : return (GxB_PLUS_ISLE_FP32 ) ;
1965 case GB_FP64_code : return (GxB_PLUS_ISLE_FP64 ) ;
1966 default : ;
1967 }
1968 break ;
1969
1970 case GB_TIMES_opcode :
1971
1972 switch (zcode)
1973 {
1974 case GB_INT8_code : return (GxB_TIMES_ISLE_INT8 ) ;
1975 case GB_UINT8_code : return (GxB_TIMES_ISLE_UINT8 ) ;
1976 case GB_INT16_code : return (GxB_TIMES_ISLE_INT16 ) ;
1977 case GB_UINT16_code: return (GxB_TIMES_ISLE_UINT16 ) ;
1978 case GB_INT32_code : return (GxB_TIMES_ISLE_INT32 ) ;
1979 case GB_UINT32_code: return (GxB_TIMES_ISLE_UINT32 ) ;
1980 case GB_INT64_code : return (GxB_TIMES_ISLE_INT64 ) ;
1981 case GB_UINT64_code: return (GxB_TIMES_ISLE_UINT64 ) ;
1982 case GB_FP32_code : return (GxB_TIMES_ISLE_FP32 ) ;
1983 case GB_FP64_code : return (GxB_TIMES_ISLE_FP64 ) ;
1984 default : ;
1985 }
1986 break ;
1987
1988 case GB_ANY_opcode :
1989
1990 switch (zcode)
1991 {
1992 case GB_INT8_code : return (GxB_ANY_ISLE_INT8 ) ;
1993 case GB_UINT8_code : return (GxB_ANY_ISLE_UINT8 ) ;
1994 case GB_INT16_code : return (GxB_ANY_ISLE_INT16 ) ;
1995 case GB_UINT16_code: return (GxB_ANY_ISLE_UINT16 ) ;
1996 case GB_INT32_code : return (GxB_ANY_ISLE_INT32 ) ;
1997 case GB_UINT32_code: return (GxB_ANY_ISLE_UINT32 ) ;
1998 case GB_INT64_code : return (GxB_ANY_ISLE_INT64 ) ;
1999 case GB_UINT64_code: return (GxB_ANY_ISLE_UINT64 ) ;
2000 case GB_FP32_code : return (GxB_ANY_ISLE_FP32 ) ;
2001 case GB_FP64_code : return (GxB_ANY_ISLE_FP64 ) ;
2002 default : ;
2003 }
2004 break ;
2005
2006 default : ;
2007 }
2008 break ;
2009
2010 case GB_LOR_opcode : // with (5 monoids) x (10 nonboolean types)
2011
2012 switch (add_opcode)
2013 {
2014
2015 case GB_MIN_opcode :
2016
2017 switch (zcode)
2018 {
2019 case GB_INT8_code : return (GxB_MIN_LOR_INT8 ) ;
2020 case GB_UINT8_code : return (GxB_MIN_LOR_UINT8 ) ;
2021 case GB_INT16_code : return (GxB_MIN_LOR_INT16 ) ;
2022 case GB_UINT16_code: return (GxB_MIN_LOR_UINT16 ) ;
2023 case GB_INT32_code : return (GxB_MIN_LOR_INT32 ) ;
2024 case GB_UINT32_code: return (GxB_MIN_LOR_UINT32 ) ;
2025 case GB_INT64_code : return (GxB_MIN_LOR_INT64 ) ;
2026 case GB_UINT64_code: return (GxB_MIN_LOR_UINT64 ) ;
2027 case GB_FP32_code : return (GxB_MIN_LOR_FP32 ) ;
2028 case GB_FP64_code : return (GxB_MIN_LOR_FP64 ) ;
2029 default : ;
2030 }
2031 break ;
2032
2033 case GB_MAX_opcode :
2034
2035 switch (zcode)
2036 {
2037 case GB_INT8_code : return (GxB_MAX_LOR_INT8 ) ;
2038 case GB_UINT8_code : return (GxB_MAX_LOR_UINT8 ) ;
2039 case GB_INT16_code : return (GxB_MAX_LOR_INT16 ) ;
2040 case GB_UINT16_code: return (GxB_MAX_LOR_UINT16 ) ;
2041 case GB_INT32_code : return (GxB_MAX_LOR_INT32 ) ;
2042 case GB_UINT32_code: return (GxB_MAX_LOR_UINT32 ) ;
2043 case GB_INT64_code : return (GxB_MAX_LOR_INT64 ) ;
2044 case GB_UINT64_code: return (GxB_MAX_LOR_UINT64 ) ;
2045 case GB_FP32_code : return (GxB_MAX_LOR_FP32 ) ;
2046 case GB_FP64_code : return (GxB_MAX_LOR_FP64 ) ;
2047 default : ;
2048 }
2049 break ;
2050
2051 case GB_PLUS_opcode :
2052
2053 switch (zcode)
2054 {
2055 case GB_INT8_code : return (GxB_PLUS_LOR_INT8 ) ;
2056 case GB_UINT8_code : return (GxB_PLUS_LOR_UINT8 ) ;
2057 case GB_INT16_code : return (GxB_PLUS_LOR_INT16 ) ;
2058 case GB_UINT16_code: return (GxB_PLUS_LOR_UINT16 ) ;
2059 case GB_INT32_code : return (GxB_PLUS_LOR_INT32 ) ;
2060 case GB_UINT32_code: return (GxB_PLUS_LOR_UINT32 ) ;
2061 case GB_INT64_code : return (GxB_PLUS_LOR_INT64 ) ;
2062 case GB_UINT64_code: return (GxB_PLUS_LOR_UINT64 ) ;
2063 case GB_FP32_code : return (GxB_PLUS_LOR_FP32 ) ;
2064 case GB_FP64_code : return (GxB_PLUS_LOR_FP64 ) ;
2065 default : ;
2066 }
2067 break ;
2068
2069 case GB_TIMES_opcode :
2070
2071 switch (zcode)
2072 {
2073 case GB_INT8_code : return (GxB_TIMES_LOR_INT8 ) ;
2074 case GB_UINT8_code : return (GxB_TIMES_LOR_UINT8 ) ;
2075 case GB_INT16_code : return (GxB_TIMES_LOR_INT16 ) ;
2076 case GB_UINT16_code: return (GxB_TIMES_LOR_UINT16 ) ;
2077 case GB_INT32_code : return (GxB_TIMES_LOR_INT32 ) ;
2078 case GB_UINT32_code: return (GxB_TIMES_LOR_UINT32 ) ;
2079 case GB_INT64_code : return (GxB_TIMES_LOR_INT64 ) ;
2080 case GB_UINT64_code: return (GxB_TIMES_LOR_UINT64 ) ;
2081 case GB_FP32_code : return (GxB_TIMES_LOR_FP32 ) ;
2082 case GB_FP64_code : return (GxB_TIMES_LOR_FP64 ) ;
2083 default : ;
2084 }
2085 break ;
2086
2087 case GB_ANY_opcode :
2088
2089 switch (zcode)
2090 {
2091 case GB_INT8_code : return (GxB_ANY_LOR_INT8 ) ;
2092 case GB_UINT8_code : return (GxB_ANY_LOR_UINT8 ) ;
2093 case GB_INT16_code : return (GxB_ANY_LOR_INT16 ) ;
2094 case GB_UINT16_code: return (GxB_ANY_LOR_UINT16 ) ;
2095 case GB_INT32_code : return (GxB_ANY_LOR_INT32 ) ;
2096 case GB_UINT32_code: return (GxB_ANY_LOR_UINT32 ) ;
2097 case GB_INT64_code : return (GxB_ANY_LOR_INT64 ) ;
2098 case GB_UINT64_code: return (GxB_ANY_LOR_UINT64 ) ;
2099 case GB_FP32_code : return (GxB_ANY_LOR_FP32 ) ;
2100 case GB_FP64_code : return (GxB_ANY_LOR_FP64 ) ;
2101 default : ;
2102 }
2103 break ;
2104
2105 default : ;
2106 }
2107 break ;
2108
2109 case GB_LAND_opcode : // with (5 monoids) x (10 nonboolean types)
2110
2111 switch (add_opcode)
2112 {
2113
2114 case GB_MIN_opcode :
2115
2116 switch (zcode)
2117 {
2118 case GB_INT8_code : return (GxB_MIN_LAND_INT8 ) ;
2119 case GB_UINT8_code : return (GxB_MIN_LAND_UINT8 ) ;
2120 case GB_INT16_code : return (GxB_MIN_LAND_INT16 ) ;
2121 case GB_UINT16_code: return (GxB_MIN_LAND_UINT16 ) ;
2122 case GB_INT32_code : return (GxB_MIN_LAND_INT32 ) ;
2123 case GB_UINT32_code: return (GxB_MIN_LAND_UINT32 ) ;
2124 case GB_INT64_code : return (GxB_MIN_LAND_INT64 ) ;
2125 case GB_UINT64_code: return (GxB_MIN_LAND_UINT64 ) ;
2126 case GB_FP32_code : return (GxB_MIN_LAND_FP32 ) ;
2127 case GB_FP64_code : return (GxB_MIN_LAND_FP64 ) ;
2128 default : ;
2129 }
2130 break ;
2131
2132 case GB_MAX_opcode :
2133
2134 switch (zcode)
2135 {
2136 case GB_INT8_code : return (GxB_MAX_LAND_INT8 ) ;
2137 case GB_UINT8_code : return (GxB_MAX_LAND_UINT8 ) ;
2138 case GB_INT16_code : return (GxB_MAX_LAND_INT16 ) ;
2139 case GB_UINT16_code: return (GxB_MAX_LAND_UINT16 ) ;
2140 case GB_INT32_code : return (GxB_MAX_LAND_INT32 ) ;
2141 case GB_UINT32_code: return (GxB_MAX_LAND_UINT32 ) ;
2142 case GB_INT64_code : return (GxB_MAX_LAND_INT64 ) ;
2143 case GB_UINT64_code: return (GxB_MAX_LAND_UINT64 ) ;
2144 case GB_FP32_code : return (GxB_MAX_LAND_FP32 ) ;
2145 case GB_FP64_code : return (GxB_MAX_LAND_FP64 ) ;
2146 default : ;
2147 }
2148 break ;
2149
2150 case GB_PLUS_opcode :
2151
2152 switch (zcode)
2153 {
2154 case GB_INT8_code : return (GxB_PLUS_LAND_INT8 ) ;
2155 case GB_UINT8_code : return (GxB_PLUS_LAND_UINT8 ) ;
2156 case GB_INT16_code : return (GxB_PLUS_LAND_INT16 ) ;
2157 case GB_UINT16_code: return (GxB_PLUS_LAND_UINT16 ) ;
2158 case GB_INT32_code : return (GxB_PLUS_LAND_INT32 ) ;
2159 case GB_UINT32_code: return (GxB_PLUS_LAND_UINT32 ) ;
2160 case GB_INT64_code : return (GxB_PLUS_LAND_INT64 ) ;
2161 case GB_UINT64_code: return (GxB_PLUS_LAND_UINT64 ) ;
2162 case GB_FP32_code : return (GxB_PLUS_LAND_FP32 ) ;
2163 case GB_FP64_code : return (GxB_PLUS_LAND_FP64 ) ;
2164 default : ;
2165 }
2166 break ;
2167
2168 case GB_TIMES_opcode :
2169
2170 switch (zcode)
2171 {
2172 case GB_INT8_code : return (GxB_TIMES_LAND_INT8 ) ;
2173 case GB_UINT8_code : return (GxB_TIMES_LAND_UINT8 ) ;
2174 case GB_INT16_code : return (GxB_TIMES_LAND_INT16 ) ;
2175 case GB_UINT16_code: return (GxB_TIMES_LAND_UINT16 ) ;
2176 case GB_INT32_code : return (GxB_TIMES_LAND_INT32 ) ;
2177 case GB_UINT32_code: return (GxB_TIMES_LAND_UINT32 ) ;
2178 case GB_INT64_code : return (GxB_TIMES_LAND_INT64 ) ;
2179 case GB_UINT64_code: return (GxB_TIMES_LAND_UINT64 ) ;
2180 case GB_FP32_code : return (GxB_TIMES_LAND_FP32 ) ;
2181 case GB_FP64_code : return (GxB_TIMES_LAND_FP64 ) ;
2182 default : ;
2183 }
2184 break ;
2185
2186 case GB_ANY_opcode :
2187
2188 switch (zcode)
2189 {
2190 case GB_INT8_code : return (GxB_ANY_LAND_INT8 ) ;
2191 case GB_UINT8_code : return (GxB_ANY_LAND_UINT8 ) ;
2192 case GB_INT16_code : return (GxB_ANY_LAND_INT16 ) ;
2193 case GB_UINT16_code: return (GxB_ANY_LAND_UINT16 ) ;
2194 case GB_INT32_code : return (GxB_ANY_LAND_INT32 ) ;
2195 case GB_UINT32_code: return (GxB_ANY_LAND_UINT32 ) ;
2196 case GB_INT64_code : return (GxB_ANY_LAND_INT64 ) ;
2197 case GB_UINT64_code: return (GxB_ANY_LAND_UINT64 ) ;
2198 case GB_FP32_code : return (GxB_ANY_LAND_FP32 ) ;
2199 case GB_FP64_code : return (GxB_ANY_LAND_FP64 ) ;
2200 default : ;
2201 }
2202 break ;
2203
2204 default : ;
2205 }
2206 break ;
2207
2208 case GB_LXOR_opcode : // with (5 monoids) x (10 nonboolean types)
2209
2210 switch (add_opcode)
2211 {
2212
2213 case GB_MIN_opcode :
2214
2215 switch (zcode)
2216 {
2217 case GB_INT8_code : return (GxB_MIN_LXOR_INT8 ) ;
2218 case GB_UINT8_code : return (GxB_MIN_LXOR_UINT8 ) ;
2219 case GB_INT16_code : return (GxB_MIN_LXOR_INT16 ) ;
2220 case GB_UINT16_code: return (GxB_MIN_LXOR_UINT16 ) ;
2221 case GB_INT32_code : return (GxB_MIN_LXOR_INT32 ) ;
2222 case GB_UINT32_code: return (GxB_MIN_LXOR_UINT32 ) ;
2223 case GB_INT64_code : return (GxB_MIN_LXOR_INT64 ) ;
2224 case GB_UINT64_code: return (GxB_MIN_LXOR_UINT64 ) ;
2225 case GB_FP32_code : return (GxB_MIN_LXOR_FP32 ) ;
2226 case GB_FP64_code : return (GxB_MIN_LXOR_FP64 ) ;
2227 default : ;
2228 }
2229 break ;
2230
2231 case GB_MAX_opcode :
2232
2233 switch (zcode)
2234 {
2235 case GB_INT8_code : return (GxB_MAX_LXOR_INT8 ) ;
2236 case GB_UINT8_code : return (GxB_MAX_LXOR_UINT8 ) ;
2237 case GB_INT16_code : return (GxB_MAX_LXOR_INT16 ) ;
2238 case GB_UINT16_code: return (GxB_MAX_LXOR_UINT16 ) ;
2239 case GB_INT32_code : return (GxB_MAX_LXOR_INT32 ) ;
2240 case GB_UINT32_code: return (GxB_MAX_LXOR_UINT32 ) ;
2241 case GB_INT64_code : return (GxB_MAX_LXOR_INT64 ) ;
2242 case GB_UINT64_code: return (GxB_MAX_LXOR_UINT64 ) ;
2243 case GB_FP32_code : return (GxB_MAX_LXOR_FP32 ) ;
2244 case GB_FP64_code : return (GxB_MAX_LXOR_FP64 ) ;
2245 default : ;
2246 }
2247 break ;
2248
2249 case GB_PLUS_opcode :
2250
2251 switch (zcode)
2252 {
2253 case GB_INT8_code : return (GxB_PLUS_LXOR_INT8 ) ;
2254 case GB_UINT8_code : return (GxB_PLUS_LXOR_UINT8 ) ;
2255 case GB_INT16_code : return (GxB_PLUS_LXOR_INT16 ) ;
2256 case GB_UINT16_code: return (GxB_PLUS_LXOR_UINT16 ) ;
2257 case GB_INT32_code : return (GxB_PLUS_LXOR_INT32 ) ;
2258 case GB_UINT32_code: return (GxB_PLUS_LXOR_UINT32 ) ;
2259 case GB_INT64_code : return (GxB_PLUS_LXOR_INT64 ) ;
2260 case GB_UINT64_code: return (GxB_PLUS_LXOR_UINT64 ) ;
2261 case GB_FP32_code : return (GxB_PLUS_LXOR_FP32 ) ;
2262 case GB_FP64_code : return (GxB_PLUS_LXOR_FP64 ) ;
2263 default : ;
2264 }
2265 break ;
2266
2267 case GB_TIMES_opcode :
2268
2269 switch (zcode)
2270 {
2271 case GB_INT8_code : return (GxB_TIMES_LXOR_INT8 ) ;
2272 case GB_UINT8_code : return (GxB_TIMES_LXOR_UINT8 ) ;
2273 case GB_INT16_code : return (GxB_TIMES_LXOR_INT16 ) ;
2274 case GB_UINT16_code: return (GxB_TIMES_LXOR_UINT16 ) ;
2275 case GB_INT32_code : return (GxB_TIMES_LXOR_INT32 ) ;
2276 case GB_UINT32_code: return (GxB_TIMES_LXOR_UINT32 ) ;
2277 case GB_INT64_code : return (GxB_TIMES_LXOR_INT64 ) ;
2278 case GB_UINT64_code: return (GxB_TIMES_LXOR_UINT64 ) ;
2279 case GB_FP32_code : return (GxB_TIMES_LXOR_FP32 ) ;
2280 case GB_FP64_code : return (GxB_TIMES_LXOR_FP64 ) ;
2281 default : ;
2282 }
2283 break ;
2284
2285 case GB_ANY_opcode :
2286
2287 switch (zcode)
2288 {
2289 case GB_INT8_code : return (GxB_ANY_LXOR_INT8 ) ;
2290 case GB_UINT8_code : return (GxB_ANY_LXOR_UINT8 ) ;
2291 case GB_INT16_code : return (GxB_ANY_LXOR_INT16 ) ;
2292 case GB_UINT16_code: return (GxB_ANY_LXOR_UINT16 ) ;
2293 case GB_INT32_code : return (GxB_ANY_LXOR_INT32 ) ;
2294 case GB_UINT32_code: return (GxB_ANY_LXOR_UINT32 ) ;
2295 case GB_INT64_code : return (GxB_ANY_LXOR_INT64 ) ;
2296 case GB_UINT64_code: return (GxB_ANY_LXOR_UINT64 ) ;
2297 case GB_FP32_code : return (GxB_ANY_LXOR_FP32 ) ;
2298 case GB_FP64_code : return (GxB_ANY_LXOR_FP64 ) ;
2299 default : ;
2300 }
2301 break ;
2302
2303 default : ;
2304 }
2305 break ;
2306
2307 default : ;
2308 }
2309
2310 //----------------------------------------------------------------------
2311 // 64 bitwise semirings
2312 //----------------------------------------------------------------------
2313
2314 switch (mult_opcode)
2315 {
2316
2317 case GB_BOR_opcode :
2318
2319 switch (add_opcode)
2320 {
2321 case GB_BOR_opcode :
2322
2323 switch (zcode)
2324 {
2325 case GB_UINT8_code : return (GxB_BOR_BOR_UINT8 ) ;
2326 case GB_UINT16_code: return (GxB_BOR_BOR_UINT16 ) ;
2327 case GB_UINT32_code: return (GxB_BOR_BOR_UINT32 ) ;
2328 case GB_UINT64_code: return (GxB_BOR_BOR_UINT64 ) ;
2329 default : ;
2330 }
2331 break ;
2332
2333 case GB_BAND_opcode :
2334
2335 switch (zcode)
2336 {
2337 case GB_UINT8_code : return (GxB_BAND_BOR_UINT8 ) ;
2338 case GB_UINT16_code: return (GxB_BAND_BOR_UINT16 ) ;
2339 case GB_UINT32_code: return (GxB_BAND_BOR_UINT32 ) ;
2340 case GB_UINT64_code: return (GxB_BAND_BOR_UINT64 ) ;
2341 default : ;
2342 }
2343 break ;
2344
2345 case GB_BXOR_opcode :
2346
2347 switch (zcode)
2348 {
2349 case GB_UINT8_code : return (GxB_BXOR_BOR_UINT8 ) ;
2350 case GB_UINT16_code: return (GxB_BXOR_BOR_UINT16 ) ;
2351 case GB_UINT32_code: return (GxB_BXOR_BOR_UINT32 ) ;
2352 case GB_UINT64_code: return (GxB_BXOR_BOR_UINT64 ) ;
2353 default : ;
2354 }
2355 break ;
2356
2357 case GB_BXNOR_opcode :
2358
2359 switch (zcode)
2360 {
2361 case GB_UINT8_code : return (GxB_BXNOR_BOR_UINT8 ) ;
2362 case GB_UINT16_code: return (GxB_BXNOR_BOR_UINT16 ) ;
2363 case GB_UINT32_code: return (GxB_BXNOR_BOR_UINT32 ) ;
2364 case GB_UINT64_code: return (GxB_BXNOR_BOR_UINT64 ) ;
2365 default : ;
2366 }
2367 break ;
2368
2369 default : ;
2370 }
2371 break ;
2372
2373 case GB_BAND_opcode :
2374
2375 switch (add_opcode)
2376 {
2377 case GB_BOR_opcode :
2378
2379 switch (zcode)
2380 {
2381 case GB_UINT8_code : return (GxB_BOR_BAND_UINT8 ) ;
2382 case GB_UINT16_code: return (GxB_BOR_BAND_UINT16 ) ;
2383 case GB_UINT32_code: return (GxB_BOR_BAND_UINT32 ) ;
2384 case GB_UINT64_code: return (GxB_BOR_BAND_UINT64 ) ;
2385 default : ;
2386 }
2387 break ;
2388
2389 case GB_BAND_opcode :
2390
2391 switch (zcode)
2392 {
2393 case GB_UINT8_code : return (GxB_BAND_BAND_UINT8 ) ;
2394 case GB_UINT16_code: return (GxB_BAND_BAND_UINT16 ) ;
2395 case GB_UINT32_code: return (GxB_BAND_BAND_UINT32 ) ;
2396 case GB_UINT64_code: return (GxB_BAND_BAND_UINT64 ) ;
2397 default : ;
2398 }
2399 break ;
2400
2401 case GB_BXOR_opcode :
2402
2403 switch (zcode)
2404 {
2405 case GB_UINT8_code : return (GxB_BXOR_BAND_UINT8 ) ;
2406 case GB_UINT16_code: return (GxB_BXOR_BAND_UINT16 ) ;
2407 case GB_UINT32_code: return (GxB_BXOR_BAND_UINT32 ) ;
2408 case GB_UINT64_code: return (GxB_BXOR_BAND_UINT64 ) ;
2409 default : ;
2410 }
2411 break ;
2412
2413 case GB_BXNOR_opcode :
2414
2415 switch (zcode)
2416 {
2417 case GB_UINT8_code : return (GxB_BXNOR_BAND_UINT8 ) ;
2418 case GB_UINT16_code: return (GxB_BXNOR_BAND_UINT16 ) ;
2419 case GB_UINT32_code: return (GxB_BXNOR_BAND_UINT32 ) ;
2420 case GB_UINT64_code: return (GxB_BXNOR_BAND_UINT64 ) ;
2421 default : ;
2422 }
2423 break ;
2424
2425 default : ;
2426 }
2427 break ;
2428
2429 case GB_BXOR_opcode :
2430
2431 switch (add_opcode)
2432 {
2433 case GB_BOR_opcode :
2434
2435 switch (zcode)
2436 {
2437 case GB_UINT8_code : return (GxB_BOR_BXOR_UINT8 ) ;
2438 case GB_UINT16_code: return (GxB_BOR_BXOR_UINT16 ) ;
2439 case GB_UINT32_code: return (GxB_BOR_BXOR_UINT32 ) ;
2440 case GB_UINT64_code: return (GxB_BOR_BXOR_UINT64 ) ;
2441 default : ;
2442 }
2443 break ;
2444
2445 case GB_BAND_opcode :
2446
2447 switch (zcode)
2448 {
2449 case GB_UINT8_code : return (GxB_BAND_BXOR_UINT8 ) ;
2450 case GB_UINT16_code: return (GxB_BAND_BXOR_UINT16 ) ;
2451 case GB_UINT32_code: return (GxB_BAND_BXOR_UINT32 ) ;
2452 case GB_UINT64_code: return (GxB_BAND_BXOR_UINT64 ) ;
2453 default : ;
2454 }
2455 break ;
2456
2457 case GB_BXOR_opcode :
2458
2459 switch (zcode)
2460 {
2461 case GB_UINT8_code : return (GxB_BXOR_BXOR_UINT8 ) ;
2462 case GB_UINT16_code: return (GxB_BXOR_BXOR_UINT16 ) ;
2463 case GB_UINT32_code: return (GxB_BXOR_BXOR_UINT32 ) ;
2464 case GB_UINT64_code: return (GxB_BXOR_BXOR_UINT64 ) ;
2465 default : ;
2466 }
2467 break ;
2468
2469 case GB_BXNOR_opcode :
2470
2471 switch (zcode)
2472 {
2473 case GB_UINT8_code : return (GxB_BXNOR_BXOR_UINT8 ) ;
2474 case GB_UINT16_code: return (GxB_BXNOR_BXOR_UINT16 ) ;
2475 case GB_UINT32_code: return (GxB_BXNOR_BXOR_UINT32 ) ;
2476 case GB_UINT64_code: return (GxB_BXNOR_BXOR_UINT64 ) ;
2477 default : ;
2478 }
2479 break ;
2480
2481 default : ;
2482 }
2483 break ;
2484
2485 case GB_BXNOR_opcode :
2486
2487 switch (add_opcode)
2488 {
2489 case GB_BOR_opcode :
2490
2491 switch (zcode)
2492 {
2493 case GB_UINT8_code : return (GxB_BOR_BXNOR_UINT8 ) ;
2494 case GB_UINT16_code: return (GxB_BOR_BXNOR_UINT16 ) ;
2495 case GB_UINT32_code: return (GxB_BOR_BXNOR_UINT32 ) ;
2496 case GB_UINT64_code: return (GxB_BOR_BXNOR_UINT64 ) ;
2497 default : ;
2498 }
2499 break ;
2500
2501 case GB_BAND_opcode :
2502
2503 switch (zcode)
2504 {
2505 case GB_UINT8_code : return (GxB_BAND_BXNOR_UINT8 ) ;
2506 case GB_UINT16_code: return (GxB_BAND_BXNOR_UINT16 ) ;
2507 case GB_UINT32_code: return (GxB_BAND_BXNOR_UINT32 ) ;
2508 case GB_UINT64_code: return (GxB_BAND_BXNOR_UINT64 ) ;
2509 default : ;
2510 }
2511 break ;
2512
2513 case GB_BXOR_opcode :
2514
2515 switch (zcode)
2516 {
2517 case GB_UINT8_code : return (GxB_BXOR_BXNOR_UINT8 ) ;
2518 case GB_UINT16_code: return (GxB_BXOR_BXNOR_UINT16 ) ;
2519 case GB_UINT32_code: return (GxB_BXOR_BXNOR_UINT32 ) ;
2520 case GB_UINT64_code: return (GxB_BXOR_BXNOR_UINT64 ) ;
2521 default : ;
2522 }
2523 break ;
2524
2525 case GB_BXNOR_opcode :
2526
2527 switch (zcode)
2528 {
2529 case GB_UINT8_code : return (GxB_BXNOR_BXNOR_UINT8 ) ;
2530 case GB_UINT16_code: return (GxB_BXNOR_BXNOR_UINT16 ) ;
2531 case GB_UINT32_code: return (GxB_BXNOR_BXNOR_UINT32 ) ;
2532 case GB_UINT64_code: return (GxB_BXNOR_BXNOR_UINT64 ) ;
2533 default : ;
2534 }
2535 break ;
2536
2537 default : ;
2538 }
2539 break ;
2540
2541 default : ;
2542 }
2543
2544 //----------------------------------------------------------------------
2545 // 80 positional semirings
2546 //----------------------------------------------------------------------
2547
2548 switch (mult_opcode)
2549 {
2550
2551 case GB_FIRSTI_opcode : // z = first_i(A(i,k),y) == i
2552
2553 if (zcode == GB_INT64_code)
2554 {
2555 switch (add_opcode)
2556 {
2557 case GB_MIN_opcode : return (GxB_MIN_FIRSTI_INT64) ;
2558 case GB_MAX_opcode : return (GxB_MAX_FIRSTI_INT64) ;
2559 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTI_INT64) ;
2560 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTI_INT64) ;
2561 case GB_ANY_opcode : return (GxB_ANY_FIRSTI_INT64) ;
2562 default: ;
2563 }
2564 }
2565 else
2566 {
2567 switch (add_opcode)
2568 {
2569 case GB_MIN_opcode : return (GxB_MIN_FIRSTI_INT32) ;
2570 case GB_MAX_opcode : return (GxB_MAX_FIRSTI_INT32) ;
2571 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTI_INT32) ;
2572 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTI_INT32) ;
2573 case GB_ANY_opcode : return (GxB_ANY_FIRSTI_INT32) ;
2574 default: ;
2575 }
2576 }
2577 break ;
2578
2579 case GB_FIRSTI1_opcode : // z = first_i1(A(i,k),y) == i+1
2580
2581 if (zcode == GB_INT64_code)
2582 {
2583 switch (add_opcode)
2584 {
2585 case GB_MIN_opcode : return (GxB_MIN_FIRSTI1_INT64) ;
2586 case GB_MAX_opcode : return (GxB_MAX_FIRSTI1_INT64) ;
2587 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTI1_INT64) ;
2588 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTI1_INT64) ;
2589 case GB_ANY_opcode : return (GxB_ANY_FIRSTI1_INT64) ;
2590 default: ;
2591 }
2592 }
2593 else
2594 {
2595 switch (add_opcode)
2596 {
2597 case GB_MIN_opcode : return (GxB_MIN_FIRSTI1_INT32) ;
2598 case GB_MAX_opcode : return (GxB_MAX_FIRSTI1_INT32) ;
2599 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTI1_INT32) ;
2600 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTI1_INT32) ;
2601 case GB_ANY_opcode : return (GxB_ANY_FIRSTI1_INT32) ;
2602 default: ;
2603 }
2604 }
2605 break ;
2606
2607 case GB_FIRSTJ_opcode : // z = first_j(A(i,k),y) == k
2608
2609 if (zcode == GB_INT64_code)
2610 {
2611 switch (add_opcode)
2612 {
2613 case GB_MIN_opcode : return (GxB_MIN_FIRSTJ_INT64) ;
2614 case GB_MAX_opcode : return (GxB_MAX_FIRSTJ_INT64) ;
2615 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTJ_INT64) ;
2616 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTJ_INT64) ;
2617 case GB_ANY_opcode : return (GxB_ANY_FIRSTJ_INT64) ;
2618 default: ;
2619 }
2620 }
2621 else
2622 {
2623 switch (add_opcode)
2624 {
2625 case GB_MIN_opcode : return (GxB_MIN_FIRSTJ_INT32) ;
2626 case GB_MAX_opcode : return (GxB_MAX_FIRSTJ_INT32) ;
2627 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTJ_INT32) ;
2628 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTJ_INT32) ;
2629 case GB_ANY_opcode : return (GxB_ANY_FIRSTJ_INT32) ;
2630 default: ;
2631 }
2632 }
2633 break ;
2634
2635 case GB_FIRSTJ1_opcode : // z = first_j1(A(i,k),y) == k+1
2636
2637 if (zcode == GB_INT64_code)
2638 {
2639 switch (add_opcode)
2640 {
2641 case GB_MIN_opcode : return (GxB_MIN_FIRSTJ1_INT64) ;
2642 case GB_MAX_opcode : return (GxB_MAX_FIRSTJ1_INT64) ;
2643 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTJ1_INT64) ;
2644 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTJ1_INT64) ;
2645 case GB_ANY_opcode : return (GxB_ANY_FIRSTJ1_INT64) ;
2646 default: ;
2647 }
2648 }
2649 else
2650 {
2651 switch (add_opcode)
2652 {
2653 case GB_MIN_opcode : return (GxB_MIN_FIRSTJ1_INT32) ;
2654 case GB_MAX_opcode : return (GxB_MAX_FIRSTJ1_INT32) ;
2655 case GB_TIMES_opcode : return (GxB_TIMES_FIRSTJ1_INT32) ;
2656 case GB_PLUS_opcode : return (GxB_PLUS_FIRSTJ1_INT32) ;
2657 case GB_ANY_opcode : return (GxB_ANY_FIRSTJ1_INT32) ;
2658 default: ;
2659 }
2660 }
2661 break ;
2662
2663 case GB_SECONDI_opcode : // z = second_i(x,B(k,j)) == k
2664
2665 if (zcode == GB_INT64_code)
2666 {
2667 switch (add_opcode)
2668 {
2669 case GB_MIN_opcode : return (GxB_MIN_SECONDI_INT64) ;
2670 case GB_MAX_opcode : return (GxB_MAX_SECONDI_INT64) ;
2671 case GB_TIMES_opcode : return (GxB_TIMES_SECONDI_INT64) ;
2672 case GB_PLUS_opcode : return (GxB_PLUS_SECONDI_INT64) ;
2673 case GB_ANY_opcode : return (GxB_ANY_SECONDI_INT64) ;
2674 default: ;
2675 }
2676 }
2677 else
2678 {
2679 switch (add_opcode)
2680 {
2681 case GB_MIN_opcode : return (GxB_MIN_SECONDI_INT32) ;
2682 case GB_MAX_opcode : return (GxB_MAX_SECONDI_INT32) ;
2683 case GB_TIMES_opcode : return (GxB_TIMES_SECONDI_INT32) ;
2684 case GB_PLUS_opcode : return (GxB_PLUS_SECONDI_INT32) ;
2685 case GB_ANY_opcode : return (GxB_ANY_SECONDI_INT32) ;
2686 default: ;
2687 }
2688 }
2689 break ;
2690
2691 case GB_SECONDI1_opcode : // z = second_i1(x,B(k,j)) == k+1
2692
2693 if (zcode == GB_INT64_code)
2694 {
2695 switch (add_opcode)
2696 {
2697 case GB_MIN_opcode : return (GxB_MIN_SECONDI1_INT64) ;
2698 case GB_MAX_opcode : return (GxB_MAX_SECONDI1_INT64) ;
2699 case GB_TIMES_opcode : return (GxB_TIMES_SECONDI1_INT64) ;
2700 case GB_PLUS_opcode : return (GxB_PLUS_SECONDI1_INT64) ;
2701 case GB_ANY_opcode : return (GxB_ANY_SECONDI1_INT64) ;
2702 default: ;
2703 }
2704 }
2705 else
2706 {
2707 switch (add_opcode)
2708 {
2709 case GB_MIN_opcode : return (GxB_MIN_SECONDI1_INT32) ;
2710 case GB_MAX_opcode : return (GxB_MAX_SECONDI1_INT32) ;
2711 case GB_TIMES_opcode : return (GxB_TIMES_SECONDI1_INT32) ;
2712 case GB_PLUS_opcode : return (GxB_PLUS_SECONDI1_INT32) ;
2713 case GB_ANY_opcode : return (GxB_ANY_SECONDI1_INT32) ;
2714 default: ;
2715 }
2716 }
2717 break ;
2718
2719 case GB_SECONDJ_opcode : // z = second_j(x,B(i,j)) == j
2720
2721 if (zcode == GB_INT64_code)
2722 {
2723 switch (add_opcode)
2724 {
2725 case GB_MIN_opcode : return (GxB_MIN_SECONDJ_INT64) ;
2726 case GB_MAX_opcode : return (GxB_MAX_SECONDJ_INT64) ;
2727 case GB_TIMES_opcode : return (GxB_TIMES_SECONDJ_INT64) ;
2728 case GB_PLUS_opcode : return (GxB_PLUS_SECONDJ_INT64) ;
2729 case GB_ANY_opcode : return (GxB_ANY_SECONDJ_INT64) ;
2730 default: ;
2731 }
2732 }
2733 else
2734 {
2735 switch (add_opcode)
2736 {
2737 case GB_MIN_opcode : return (GxB_MIN_SECONDJ_INT32) ;
2738 case GB_MAX_opcode : return (GxB_MAX_SECONDJ_INT32) ;
2739 case GB_TIMES_opcode : return (GxB_TIMES_SECONDJ_INT32) ;
2740 case GB_PLUS_opcode : return (GxB_PLUS_SECONDJ_INT32) ;
2741 case GB_ANY_opcode : return (GxB_ANY_SECONDJ_INT32) ;
2742 default: ;
2743 }
2744 }
2745 break ;
2746
2747 case GB_SECONDJ1_opcode : // z = second_j1(x,B(i,j)) == j+1
2748
2749 if (zcode == GB_INT64_code)
2750 {
2751 switch (add_opcode)
2752 {
2753 case GB_MIN_opcode : return (GxB_MIN_SECONDJ1_INT64) ;
2754 case GB_MAX_opcode : return (GxB_MAX_SECONDJ1_INT64) ;
2755 case GB_TIMES_opcode : return (GxB_TIMES_SECONDJ1_INT64) ;
2756 case GB_PLUS_opcode : return (GxB_PLUS_SECONDJ1_INT64) ;
2757 case GB_ANY_opcode : return (GxB_ANY_SECONDJ1_INT64) ;
2758 default: ;
2759 }
2760 }
2761 else
2762 {
2763 switch (add_opcode)
2764 {
2765 case GB_MIN_opcode : return (GxB_MIN_SECONDJ1_INT32) ;
2766 case GB_MAX_opcode : return (GxB_MAX_SECONDJ1_INT32) ;
2767 case GB_TIMES_opcode : return (GxB_TIMES_SECONDJ1_INT32) ;
2768 case GB_PLUS_opcode : return (GxB_PLUS_SECONDJ1_INT32) ;
2769 case GB_ANY_opcode : return (GxB_ANY_SECONDJ1_INT32) ;
2770 default: ;
2771 }
2772 }
2773 break ;
2774
2775 default : ;
2776 }
2777
2778 }
2779 else if (xcode != GB_BOOL_code)
2780 {
2781
2782 //----------------------------------------------------------------------
2783 // 300 semirings with TxT -> bool multiply operators
2784 //----------------------------------------------------------------------
2785
2786 // x,y are one of the 10 non-Boolean types, z is Boolean
2787
2788 switch (mult_opcode)
2789 {
2790
2791 case GB_EQ_opcode : // with (5 bool monoids) x (10 nonboolean types)
2792
2793 switch (add_opcode)
2794 {
2795
2796 case GB_LOR_opcode :
2797
2798 switch (xcode)
2799 {
2800 case GB_INT8_code : return (GxB_LOR_EQ_INT8 ) ;
2801 case GB_UINT8_code : return (GxB_LOR_EQ_UINT8 ) ;
2802 case GB_INT16_code : return (GxB_LOR_EQ_INT16 ) ;
2803 case GB_UINT16_code: return (GxB_LOR_EQ_UINT16 ) ;
2804 case GB_INT32_code : return (GxB_LOR_EQ_INT32 ) ;
2805 case GB_UINT32_code: return (GxB_LOR_EQ_UINT32 ) ;
2806 case GB_INT64_code : return (GxB_LOR_EQ_INT64 ) ;
2807 case GB_UINT64_code: return (GxB_LOR_EQ_UINT64 ) ;
2808 case GB_FP32_code : return (GxB_LOR_EQ_FP32 ) ;
2809 case GB_FP64_code : return (GxB_LOR_EQ_FP64 ) ;
2810 default : ;
2811 }
2812 break ;
2813
2814 case GB_LAND_opcode :
2815
2816 switch (xcode)
2817 {
2818 case GB_INT8_code : return (GxB_LAND_EQ_INT8 ) ;
2819 case GB_UINT8_code : return (GxB_LAND_EQ_UINT8 ) ;
2820 case GB_INT16_code : return (GxB_LAND_EQ_INT16 ) ;
2821 case GB_UINT16_code: return (GxB_LAND_EQ_UINT16 ) ;
2822 case GB_INT32_code : return (GxB_LAND_EQ_INT32 ) ;
2823 case GB_UINT32_code: return (GxB_LAND_EQ_UINT32 ) ;
2824 case GB_INT64_code : return (GxB_LAND_EQ_INT64 ) ;
2825 case GB_UINT64_code: return (GxB_LAND_EQ_UINT64 ) ;
2826 case GB_FP32_code : return (GxB_LAND_EQ_FP32 ) ;
2827 case GB_FP64_code : return (GxB_LAND_EQ_FP64 ) ;
2828 default : ;
2829 }
2830 break ;
2831
2832 case GB_LXOR_opcode :
2833
2834 switch (xcode)
2835 {
2836 case GB_INT8_code : return (GxB_LXOR_EQ_INT8 ) ;
2837 case GB_UINT8_code : return (GxB_LXOR_EQ_UINT8 ) ;
2838 case GB_INT16_code : return (GxB_LXOR_EQ_INT16 ) ;
2839 case GB_UINT16_code: return (GxB_LXOR_EQ_UINT16 ) ;
2840 case GB_INT32_code : return (GxB_LXOR_EQ_INT32 ) ;
2841 case GB_UINT32_code: return (GxB_LXOR_EQ_UINT32 ) ;
2842 case GB_INT64_code : return (GxB_LXOR_EQ_INT64 ) ;
2843 case GB_UINT64_code: return (GxB_LXOR_EQ_UINT64 ) ;
2844 case GB_FP32_code : return (GxB_LXOR_EQ_FP32 ) ;
2845 case GB_FP64_code : return (GxB_LXOR_EQ_FP64 ) ;
2846 default : ;
2847 }
2848 break ;
2849
2850 case GB_EQ_opcode :
2851
2852 switch (xcode)
2853 {
2854 case GB_INT8_code : return (GxB_EQ_EQ_INT8 ) ;
2855 case GB_UINT8_code : return (GxB_EQ_EQ_UINT8 ) ;
2856 case GB_INT16_code : return (GxB_EQ_EQ_INT16 ) ;
2857 case GB_UINT16_code: return (GxB_EQ_EQ_UINT16 ) ;
2858 case GB_INT32_code : return (GxB_EQ_EQ_INT32 ) ;
2859 case GB_UINT32_code: return (GxB_EQ_EQ_UINT32 ) ;
2860 case GB_INT64_code : return (GxB_EQ_EQ_INT64 ) ;
2861 case GB_UINT64_code: return (GxB_EQ_EQ_UINT64 ) ;
2862 case GB_FP32_code : return (GxB_EQ_EQ_FP32 ) ;
2863 case GB_FP64_code : return (GxB_EQ_EQ_FP64 ) ;
2864 default : ;
2865 }
2866 break ;
2867
2868 case GB_ANY_opcode :
2869
2870 switch (xcode)
2871 {
2872 case GB_INT8_code : return (GxB_ANY_EQ_INT8 ) ;
2873 case GB_UINT8_code : return (GxB_ANY_EQ_UINT8 ) ;
2874 case GB_INT16_code : return (GxB_ANY_EQ_INT16 ) ;
2875 case GB_UINT16_code: return (GxB_ANY_EQ_UINT16 ) ;
2876 case GB_INT32_code : return (GxB_ANY_EQ_INT32 ) ;
2877 case GB_UINT32_code: return (GxB_ANY_EQ_UINT32 ) ;
2878 case GB_INT64_code : return (GxB_ANY_EQ_INT64 ) ;
2879 case GB_UINT64_code: return (GxB_ANY_EQ_UINT64 ) ;
2880 case GB_FP32_code : return (GxB_ANY_EQ_FP32 ) ;
2881 case GB_FP64_code : return (GxB_ANY_EQ_FP64 ) ;
2882 default : ;
2883 }
2884 break ;
2885
2886 default : ;
2887 }
2888 break ;
2889
2890 case GB_NE_opcode : // with (5 bool monoids) x (10 nonboolean types)
2891
2892 switch (add_opcode)
2893 {
2894
2895 case GB_LOR_opcode :
2896
2897 switch (xcode)
2898 {
2899 case GB_INT8_code : return (GxB_LOR_NE_INT8 ) ;
2900 case GB_UINT8_code : return (GxB_LOR_NE_UINT8 ) ;
2901 case GB_INT16_code : return (GxB_LOR_NE_INT16 ) ;
2902 case GB_UINT16_code: return (GxB_LOR_NE_UINT16 ) ;
2903 case GB_INT32_code : return (GxB_LOR_NE_INT32 ) ;
2904 case GB_UINT32_code: return (GxB_LOR_NE_UINT32 ) ;
2905 case GB_INT64_code : return (GxB_LOR_NE_INT64 ) ;
2906 case GB_UINT64_code: return (GxB_LOR_NE_UINT64 ) ;
2907 case GB_FP32_code : return (GxB_LOR_NE_FP32 ) ;
2908 case GB_FP64_code : return (GxB_LOR_NE_FP64 ) ;
2909 default : ;
2910 }
2911 break ;
2912
2913 case GB_LAND_opcode :
2914
2915 switch (xcode)
2916 {
2917 case GB_INT8_code : return (GxB_LAND_NE_INT8 ) ;
2918 case GB_UINT8_code : return (GxB_LAND_NE_UINT8 ) ;
2919 case GB_INT16_code : return (GxB_LAND_NE_INT16 ) ;
2920 case GB_UINT16_code: return (GxB_LAND_NE_UINT16 ) ;
2921 case GB_INT32_code : return (GxB_LAND_NE_INT32 ) ;
2922 case GB_UINT32_code: return (GxB_LAND_NE_UINT32 ) ;
2923 case GB_INT64_code : return (GxB_LAND_NE_INT64 ) ;
2924 case GB_UINT64_code: return (GxB_LAND_NE_UINT64 ) ;
2925 case GB_FP32_code : return (GxB_LAND_NE_FP32 ) ;
2926 case GB_FP64_code : return (GxB_LAND_NE_FP64 ) ;
2927 default : ;
2928 }
2929 break ;
2930
2931 case GB_LXOR_opcode :
2932
2933 switch (xcode)
2934 {
2935 case GB_INT8_code : return (GxB_LXOR_NE_INT8 ) ;
2936 case GB_UINT8_code : return (GxB_LXOR_NE_UINT8 ) ;
2937 case GB_INT16_code : return (GxB_LXOR_NE_INT16 ) ;
2938 case GB_UINT16_code: return (GxB_LXOR_NE_UINT16 ) ;
2939 case GB_INT32_code : return (GxB_LXOR_NE_INT32 ) ;
2940 case GB_UINT32_code: return (GxB_LXOR_NE_UINT32 ) ;
2941 case GB_INT64_code : return (GxB_LXOR_NE_INT64 ) ;
2942 case GB_UINT64_code: return (GxB_LXOR_NE_UINT64 ) ;
2943 case GB_FP32_code : return (GxB_LXOR_NE_FP32 ) ;
2944 case GB_FP64_code : return (GxB_LXOR_NE_FP64 ) ;
2945 default : ;
2946 }
2947 break ;
2948
2949 case GB_EQ_opcode :
2950
2951 switch (xcode)
2952 {
2953 case GB_INT8_code : return (GxB_EQ_NE_INT8 ) ;
2954 case GB_UINT8_code : return (GxB_EQ_NE_UINT8 ) ;
2955 case GB_INT16_code : return (GxB_EQ_NE_INT16 ) ;
2956 case GB_UINT16_code: return (GxB_EQ_NE_UINT16 ) ;
2957 case GB_INT32_code : return (GxB_EQ_NE_INT32 ) ;
2958 case GB_UINT32_code: return (GxB_EQ_NE_UINT32 ) ;
2959 case GB_INT64_code : return (GxB_EQ_NE_INT64 ) ;
2960 case GB_UINT64_code: return (GxB_EQ_NE_UINT64 ) ;
2961 case GB_FP32_code : return (GxB_EQ_NE_FP32 ) ;
2962 case GB_FP64_code : return (GxB_EQ_NE_FP64 ) ;
2963 default : ;
2964 }
2965 break ;
2966
2967 case GB_ANY_opcode :
2968
2969 switch (xcode)
2970 {
2971 case GB_INT8_code : return (GxB_ANY_NE_INT8 ) ;
2972 case GB_UINT8_code : return (GxB_ANY_NE_UINT8 ) ;
2973 case GB_INT16_code : return (GxB_ANY_NE_INT16 ) ;
2974 case GB_UINT16_code: return (GxB_ANY_NE_UINT16 ) ;
2975 case GB_INT32_code : return (GxB_ANY_NE_INT32 ) ;
2976 case GB_UINT32_code: return (GxB_ANY_NE_UINT32 ) ;
2977 case GB_INT64_code : return (GxB_ANY_NE_INT64 ) ;
2978 case GB_UINT64_code: return (GxB_ANY_NE_UINT64 ) ;
2979 case GB_FP32_code : return (GxB_ANY_NE_FP32 ) ;
2980 case GB_FP64_code : return (GxB_ANY_NE_FP64 ) ;
2981 default : ;
2982 }
2983 break ;
2984
2985 default : ;
2986 }
2987 break ;
2988
2989 case GB_GT_opcode : // with (5 bool monoids) x (10 nonboolean types)
2990
2991 switch (add_opcode)
2992 {
2993
2994 case GB_LOR_opcode :
2995
2996 switch (xcode)
2997 {
2998 case GB_INT8_code : return (GxB_LOR_GT_INT8 ) ;
2999 case GB_UINT8_code : return (GxB_LOR_GT_UINT8 ) ;
3000 case GB_INT16_code : return (GxB_LOR_GT_INT16 ) ;
3001 case GB_UINT16_code: return (GxB_LOR_GT_UINT16 ) ;
3002 case GB_INT32_code : return (GxB_LOR_GT_INT32 ) ;
3003 case GB_UINT32_code: return (GxB_LOR_GT_UINT32 ) ;
3004 case GB_INT64_code : return (GxB_LOR_GT_INT64 ) ;
3005 case GB_UINT64_code: return (GxB_LOR_GT_UINT64 ) ;
3006 case GB_FP32_code : return (GxB_LOR_GT_FP32 ) ;
3007 case GB_FP64_code : return (GxB_LOR_GT_FP64 ) ;
3008 default : ;
3009 }
3010 break ;
3011
3012 case GB_LAND_opcode :
3013
3014 switch (xcode)
3015 {
3016 case GB_INT8_code : return (GxB_LAND_GT_INT8 ) ;
3017 case GB_UINT8_code : return (GxB_LAND_GT_UINT8 ) ;
3018 case GB_INT16_code : return (GxB_LAND_GT_INT16 ) ;
3019 case GB_UINT16_code: return (GxB_LAND_GT_UINT16 ) ;
3020 case GB_INT32_code : return (GxB_LAND_GT_INT32 ) ;
3021 case GB_UINT32_code: return (GxB_LAND_GT_UINT32 ) ;
3022 case GB_INT64_code : return (GxB_LAND_GT_INT64 ) ;
3023 case GB_UINT64_code: return (GxB_LAND_GT_UINT64 ) ;
3024 case GB_FP32_code : return (GxB_LAND_GT_FP32 ) ;
3025 case GB_FP64_code : return (GxB_LAND_GT_FP64 ) ;
3026 default : ;
3027 }
3028 break ;
3029
3030 case GB_LXOR_opcode :
3031
3032 switch (xcode)
3033 {
3034 case GB_INT8_code : return (GxB_LXOR_GT_INT8 ) ;
3035 case GB_UINT8_code : return (GxB_LXOR_GT_UINT8 ) ;
3036 case GB_INT16_code : return (GxB_LXOR_GT_INT16 ) ;
3037 case GB_UINT16_code: return (GxB_LXOR_GT_UINT16 ) ;
3038 case GB_INT32_code : return (GxB_LXOR_GT_INT32 ) ;
3039 case GB_UINT32_code: return (GxB_LXOR_GT_UINT32 ) ;
3040 case GB_INT64_code : return (GxB_LXOR_GT_INT64 ) ;
3041 case GB_UINT64_code: return (GxB_LXOR_GT_UINT64 ) ;
3042 case GB_FP32_code : return (GxB_LXOR_GT_FP32 ) ;
3043 case GB_FP64_code : return (GxB_LXOR_GT_FP64 ) ;
3044 default : ;
3045 }
3046 break ;
3047
3048 case GB_EQ_opcode :
3049
3050 switch (xcode)
3051 {
3052 case GB_INT8_code : return (GxB_EQ_GT_INT8 ) ;
3053 case GB_UINT8_code : return (GxB_EQ_GT_UINT8 ) ;
3054 case GB_INT16_code : return (GxB_EQ_GT_INT16 ) ;
3055 case GB_UINT16_code: return (GxB_EQ_GT_UINT16 ) ;
3056 case GB_INT32_code : return (GxB_EQ_GT_INT32 ) ;
3057 case GB_UINT32_code: return (GxB_EQ_GT_UINT32 ) ;
3058 case GB_INT64_code : return (GxB_EQ_GT_INT64 ) ;
3059 case GB_UINT64_code: return (GxB_EQ_GT_UINT64 ) ;
3060 case GB_FP32_code : return (GxB_EQ_GT_FP32 ) ;
3061 case GB_FP64_code : return (GxB_EQ_GT_FP64 ) ;
3062 default : ;
3063 }
3064 break ;
3065
3066 case GB_ANY_opcode :
3067
3068 switch (xcode)
3069 {
3070 case GB_INT8_code : return (GxB_ANY_GT_INT8 ) ;
3071 case GB_UINT8_code : return (GxB_ANY_GT_UINT8 ) ;
3072 case GB_INT16_code : return (GxB_ANY_GT_INT16 ) ;
3073 case GB_UINT16_code: return (GxB_ANY_GT_UINT16 ) ;
3074 case GB_INT32_code : return (GxB_ANY_GT_INT32 ) ;
3075 case GB_UINT32_code: return (GxB_ANY_GT_UINT32 ) ;
3076 case GB_INT64_code : return (GxB_ANY_GT_INT64 ) ;
3077 case GB_UINT64_code: return (GxB_ANY_GT_UINT64 ) ;
3078 case GB_FP32_code : return (GxB_ANY_GT_FP32 ) ;
3079 case GB_FP64_code : return (GxB_ANY_GT_FP64 ) ;
3080 default : ;
3081 }
3082 break ;
3083
3084 default : ;
3085 }
3086 break ;
3087
3088 case GB_LT_opcode : // with (5 bool monoids) x (10 nonboolean types)
3089
3090 switch (add_opcode)
3091 {
3092
3093 case GB_LOR_opcode :
3094
3095 switch (xcode)
3096 {
3097 case GB_INT8_code : return (GxB_LOR_LT_INT8 ) ;
3098 case GB_UINT8_code : return (GxB_LOR_LT_UINT8 ) ;
3099 case GB_INT16_code : return (GxB_LOR_LT_INT16 ) ;
3100 case GB_UINT16_code: return (GxB_LOR_LT_UINT16 ) ;
3101 case GB_INT32_code : return (GxB_LOR_LT_INT32 ) ;
3102 case GB_UINT32_code: return (GxB_LOR_LT_UINT32 ) ;
3103 case GB_INT64_code : return (GxB_LOR_LT_INT64 ) ;
3104 case GB_UINT64_code: return (GxB_LOR_LT_UINT64 ) ;
3105 case GB_FP32_code : return (GxB_LOR_LT_FP32 ) ;
3106 case GB_FP64_code : return (GxB_LOR_LT_FP64 ) ;
3107 default : ;
3108 }
3109 break ;
3110
3111 case GB_LAND_opcode :
3112
3113 switch (xcode)
3114 {
3115 case GB_INT8_code : return (GxB_LAND_LT_INT8 ) ;
3116 case GB_UINT8_code : return (GxB_LAND_LT_UINT8 ) ;
3117 case GB_INT16_code : return (GxB_LAND_LT_INT16 ) ;
3118 case GB_UINT16_code: return (GxB_LAND_LT_UINT16 ) ;
3119 case GB_INT32_code : return (GxB_LAND_LT_INT32 ) ;
3120 case GB_UINT32_code: return (GxB_LAND_LT_UINT32 ) ;
3121 case GB_INT64_code : return (GxB_LAND_LT_INT64 ) ;
3122 case GB_UINT64_code: return (GxB_LAND_LT_UINT64 ) ;
3123 case GB_FP32_code : return (GxB_LAND_LT_FP32 ) ;
3124 case GB_FP64_code : return (GxB_LAND_LT_FP64 ) ;
3125 default : ;
3126 }
3127 break ;
3128
3129 case GB_LXOR_opcode :
3130
3131 switch (xcode)
3132 {
3133 case GB_INT8_code : return (GxB_LXOR_LT_INT8 ) ;
3134 case GB_UINT8_code : return (GxB_LXOR_LT_UINT8 ) ;
3135 case GB_INT16_code : return (GxB_LXOR_LT_INT16 ) ;
3136 case GB_UINT16_code: return (GxB_LXOR_LT_UINT16 ) ;
3137 case GB_INT32_code : return (GxB_LXOR_LT_INT32 ) ;
3138 case GB_UINT32_code: return (GxB_LXOR_LT_UINT32 ) ;
3139 case GB_INT64_code : return (GxB_LXOR_LT_INT64 ) ;
3140 case GB_UINT64_code: return (GxB_LXOR_LT_UINT64 ) ;
3141 case GB_FP32_code : return (GxB_LXOR_LT_FP32 ) ;
3142 case GB_FP64_code : return (GxB_LXOR_LT_FP64 ) ;
3143 default : ;
3144 }
3145 break ;
3146
3147 case GB_EQ_opcode :
3148
3149 switch (xcode)
3150 {
3151 case GB_INT8_code : return (GxB_EQ_LT_INT8 ) ;
3152 case GB_UINT8_code : return (GxB_EQ_LT_UINT8 ) ;
3153 case GB_INT16_code : return (GxB_EQ_LT_INT16 ) ;
3154 case GB_UINT16_code: return (GxB_EQ_LT_UINT16 ) ;
3155 case GB_INT32_code : return (GxB_EQ_LT_INT32 ) ;
3156 case GB_UINT32_code: return (GxB_EQ_LT_UINT32 ) ;
3157 case GB_INT64_code : return (GxB_EQ_LT_INT64 ) ;
3158 case GB_UINT64_code: return (GxB_EQ_LT_UINT64 ) ;
3159 case GB_FP32_code : return (GxB_EQ_LT_FP32 ) ;
3160 case GB_FP64_code : return (GxB_EQ_LT_FP64 ) ;
3161 default : ;
3162 }
3163 break ;
3164
3165 case GB_ANY_opcode :
3166
3167 switch (xcode)
3168 {
3169 case GB_INT8_code : return (GxB_ANY_LT_INT8 ) ;
3170 case GB_UINT8_code : return (GxB_ANY_LT_UINT8 ) ;
3171 case GB_INT16_code : return (GxB_ANY_LT_INT16 ) ;
3172 case GB_UINT16_code: return (GxB_ANY_LT_UINT16 ) ;
3173 case GB_INT32_code : return (GxB_ANY_LT_INT32 ) ;
3174 case GB_UINT32_code: return (GxB_ANY_LT_UINT32 ) ;
3175 case GB_INT64_code : return (GxB_ANY_LT_INT64 ) ;
3176 case GB_UINT64_code: return (GxB_ANY_LT_UINT64 ) ;
3177 case GB_FP32_code : return (GxB_ANY_LT_FP32 ) ;
3178 case GB_FP64_code : return (GxB_ANY_LT_FP64 ) ;
3179 default : ;
3180 }
3181 break ;
3182
3183 default : ;
3184 }
3185 break ;
3186
3187 case GB_GE_opcode : // with (5 bool monoids) x (10 nonboolean types)
3188
3189 switch (add_opcode)
3190 {
3191
3192 case GB_LOR_opcode :
3193
3194 switch (xcode)
3195 {
3196 case GB_INT8_code : return (GxB_LOR_GE_INT8 ) ;
3197 case GB_UINT8_code : return (GxB_LOR_GE_UINT8 ) ;
3198 case GB_INT16_code : return (GxB_LOR_GE_INT16 ) ;
3199 case GB_UINT16_code: return (GxB_LOR_GE_UINT16 ) ;
3200 case GB_INT32_code : return (GxB_LOR_GE_INT32 ) ;
3201 case GB_UINT32_code: return (GxB_LOR_GE_UINT32 ) ;
3202 case GB_INT64_code : return (GxB_LOR_GE_INT64 ) ;
3203 case GB_UINT64_code: return (GxB_LOR_GE_UINT64 ) ;
3204 case GB_FP32_code : return (GxB_LOR_GE_FP32 ) ;
3205 case GB_FP64_code : return (GxB_LOR_GE_FP64 ) ;
3206 default : ;
3207 }
3208 break ;
3209
3210 case GB_LAND_opcode :
3211
3212 switch (xcode)
3213 {
3214 case GB_INT8_code : return (GxB_LAND_GE_INT8 ) ;
3215 case GB_UINT8_code : return (GxB_LAND_GE_UINT8 ) ;
3216 case GB_INT16_code : return (GxB_LAND_GE_INT16 ) ;
3217 case GB_UINT16_code: return (GxB_LAND_GE_UINT16 ) ;
3218 case GB_INT32_code : return (GxB_LAND_GE_INT32 ) ;
3219 case GB_UINT32_code: return (GxB_LAND_GE_UINT32 ) ;
3220 case GB_INT64_code : return (GxB_LAND_GE_INT64 ) ;
3221 case GB_UINT64_code: return (GxB_LAND_GE_UINT64 ) ;
3222 case GB_FP32_code : return (GxB_LAND_GE_FP32 ) ;
3223 case GB_FP64_code : return (GxB_LAND_GE_FP64 ) ;
3224 default : ;
3225 }
3226 break ;
3227
3228 case GB_LXOR_opcode :
3229
3230 switch (xcode)
3231 {
3232 case GB_INT8_code : return (GxB_LXOR_GE_INT8 ) ;
3233 case GB_UINT8_code : return (GxB_LXOR_GE_UINT8 ) ;
3234 case GB_INT16_code : return (GxB_LXOR_GE_INT16 ) ;
3235 case GB_UINT16_code: return (GxB_LXOR_GE_UINT16 ) ;
3236 case GB_INT32_code : return (GxB_LXOR_GE_INT32 ) ;
3237 case GB_UINT32_code: return (GxB_LXOR_GE_UINT32 ) ;
3238 case GB_INT64_code : return (GxB_LXOR_GE_INT64 ) ;
3239 case GB_UINT64_code: return (GxB_LXOR_GE_UINT64 ) ;
3240 case GB_FP32_code : return (GxB_LXOR_GE_FP32 ) ;
3241 case GB_FP64_code : return (GxB_LXOR_GE_FP64 ) ;
3242 default : ;
3243 }
3244 break ;
3245
3246 case GB_EQ_opcode :
3247
3248 switch (xcode)
3249 {
3250 case GB_INT8_code : return (GxB_EQ_GE_INT8 ) ;
3251 case GB_UINT8_code : return (GxB_EQ_GE_UINT8 ) ;
3252 case GB_INT16_code : return (GxB_EQ_GE_INT16 ) ;
3253 case GB_UINT16_code: return (GxB_EQ_GE_UINT16 ) ;
3254 case GB_INT32_code : return (GxB_EQ_GE_INT32 ) ;
3255 case GB_UINT32_code: return (GxB_EQ_GE_UINT32 ) ;
3256 case GB_INT64_code : return (GxB_EQ_GE_INT64 ) ;
3257 case GB_UINT64_code: return (GxB_EQ_GE_UINT64 ) ;
3258 case GB_FP32_code : return (GxB_EQ_GE_FP32 ) ;
3259 case GB_FP64_code : return (GxB_EQ_GE_FP64 ) ;
3260 default : ;
3261 }
3262 break ;
3263
3264 case GB_ANY_opcode :
3265
3266 switch (xcode)
3267 {
3268 case GB_INT8_code : return (GxB_ANY_GE_INT8 ) ;
3269 case GB_UINT8_code : return (GxB_ANY_GE_UINT8 ) ;
3270 case GB_INT16_code : return (GxB_ANY_GE_INT16 ) ;
3271 case GB_UINT16_code: return (GxB_ANY_GE_UINT16 ) ;
3272 case GB_INT32_code : return (GxB_ANY_GE_INT32 ) ;
3273 case GB_UINT32_code: return (GxB_ANY_GE_UINT32 ) ;
3274 case GB_INT64_code : return (GxB_ANY_GE_INT64 ) ;
3275 case GB_UINT64_code: return (GxB_ANY_GE_UINT64 ) ;
3276 case GB_FP32_code : return (GxB_ANY_GE_FP32 ) ;
3277 case GB_FP64_code : return (GxB_ANY_GE_FP64 ) ;
3278 default : ;
3279 }
3280 break ;
3281
3282 default : ;
3283 }
3284 break ;
3285
3286 case GB_LE_opcode : // with (5 bool monoids) x (10 nonboolean types)
3287
3288 switch (add_opcode)
3289 {
3290
3291 case GB_LOR_opcode :
3292
3293 switch (xcode)
3294 {
3295 case GB_INT8_code : return (GxB_LOR_LE_INT8 ) ;
3296 case GB_UINT8_code : return (GxB_LOR_LE_UINT8 ) ;
3297 case GB_INT16_code : return (GxB_LOR_LE_INT16 ) ;
3298 case GB_UINT16_code: return (GxB_LOR_LE_UINT16 ) ;
3299 case GB_INT32_code : return (GxB_LOR_LE_INT32 ) ;
3300 case GB_UINT32_code: return (GxB_LOR_LE_UINT32 ) ;
3301 case GB_INT64_code : return (GxB_LOR_LE_INT64 ) ;
3302 case GB_UINT64_code: return (GxB_LOR_LE_UINT64 ) ;
3303 case GB_FP32_code : return (GxB_LOR_LE_FP32 ) ;
3304 case GB_FP64_code : return (GxB_LOR_LE_FP64 ) ;
3305 default : ;
3306 }
3307 break ;
3308
3309 case GB_LAND_opcode :
3310
3311 switch (xcode)
3312 {
3313 case GB_INT8_code : return (GxB_LAND_LE_INT8 ) ;
3314 case GB_UINT8_code : return (GxB_LAND_LE_UINT8 ) ;
3315 case GB_INT16_code : return (GxB_LAND_LE_INT16 ) ;
3316 case GB_UINT16_code: return (GxB_LAND_LE_UINT16 ) ;
3317 case GB_INT32_code : return (GxB_LAND_LE_INT32 ) ;
3318 case GB_UINT32_code: return (GxB_LAND_LE_UINT32 ) ;
3319 case GB_INT64_code : return (GxB_LAND_LE_INT64 ) ;
3320 case GB_UINT64_code: return (GxB_LAND_LE_UINT64 ) ;
3321 case GB_FP32_code : return (GxB_LAND_LE_FP32 ) ;
3322 case GB_FP64_code : return (GxB_LAND_LE_FP64 ) ;
3323 default : ;
3324 }
3325 break ;
3326
3327 case GB_LXOR_opcode :
3328
3329 switch (xcode)
3330 {
3331 case GB_INT8_code : return (GxB_LXOR_LE_INT8 ) ;
3332 case GB_UINT8_code : return (GxB_LXOR_LE_UINT8 ) ;
3333 case GB_INT16_code : return (GxB_LXOR_LE_INT16 ) ;
3334 case GB_UINT16_code: return (GxB_LXOR_LE_UINT16 ) ;
3335 case GB_INT32_code : return (GxB_LXOR_LE_INT32 ) ;
3336 case GB_UINT32_code: return (GxB_LXOR_LE_UINT32 ) ;
3337 case GB_INT64_code : return (GxB_LXOR_LE_INT64 ) ;
3338 case GB_UINT64_code: return (GxB_LXOR_LE_UINT64 ) ;
3339 case GB_FP32_code : return (GxB_LXOR_LE_FP32 ) ;
3340 case GB_FP64_code : return (GxB_LXOR_LE_FP64 ) ;
3341 default : ;
3342 }
3343 break ;
3344
3345 case GB_EQ_opcode :
3346
3347 switch (xcode)
3348 {
3349 case GB_INT8_code : return (GxB_EQ_LE_INT8 ) ;
3350 case GB_UINT8_code : return (GxB_EQ_LE_UINT8 ) ;
3351 case GB_INT16_code : return (GxB_EQ_LE_INT16 ) ;
3352 case GB_UINT16_code: return (GxB_EQ_LE_UINT16 ) ;
3353 case GB_INT32_code : return (GxB_EQ_LE_INT32 ) ;
3354 case GB_UINT32_code: return (GxB_EQ_LE_UINT32 ) ;
3355 case GB_INT64_code : return (GxB_EQ_LE_INT64 ) ;
3356 case GB_UINT64_code: return (GxB_EQ_LE_UINT64 ) ;
3357 case GB_FP32_code : return (GxB_EQ_LE_FP32 ) ;
3358 case GB_FP64_code : return (GxB_EQ_LE_FP64 ) ;
3359 default : ;
3360 }
3361 break ;
3362
3363 case GB_ANY_opcode :
3364
3365 switch (xcode)
3366 {
3367 case GB_INT8_code : return (GxB_ANY_LE_INT8 ) ;
3368 case GB_UINT8_code : return (GxB_ANY_LE_UINT8 ) ;
3369 case GB_INT16_code : return (GxB_ANY_LE_INT16 ) ;
3370 case GB_UINT16_code: return (GxB_ANY_LE_UINT16 ) ;
3371 case GB_INT32_code : return (GxB_ANY_LE_INT32 ) ;
3372 case GB_UINT32_code: return (GxB_ANY_LE_UINT32 ) ;
3373 case GB_INT64_code : return (GxB_ANY_LE_INT64 ) ;
3374 case GB_UINT64_code: return (GxB_ANY_LE_UINT64 ) ;
3375 case GB_FP32_code : return (GxB_ANY_LE_FP32 ) ;
3376 case GB_FP64_code : return (GxB_ANY_LE_FP64 ) ;
3377 default : ;
3378 }
3379 break ;
3380
3381 default : ;
3382 }
3383 break ;
3384
3385 default : ;
3386 }
3387 }
3388 else
3389 {
3390
3391 //----------------------------------------------------------------------
3392 // 55 purely Boolean semirings
3393 //----------------------------------------------------------------------
3394
3395 // x,y,z are all Boolean, and all operators are Boolean
3396
3397 switch (mult_opcode)
3398 {
3399
3400 case GB_FIRST_opcode :
3401
3402 switch (add_opcode)
3403 {
3404 case GB_LOR_opcode : return (GxB_LOR_FIRST_BOOL ) ;
3405 case GB_LAND_opcode : return (GxB_LAND_FIRST_BOOL ) ;
3406 case GB_LXOR_opcode : return (GxB_LXOR_FIRST_BOOL ) ;
3407 case GB_EQ_opcode : return (GxB_EQ_FIRST_BOOL ) ;
3408 case GB_ANY_opcode : return (GxB_ANY_FIRST_BOOL ) ;
3409 default : ;
3410 }
3411 break ;
3412
3413 case GB_SECOND_opcode :
3414
3415 switch (add_opcode)
3416 {
3417 case GB_LOR_opcode : return (GxB_LOR_SECOND_BOOL ) ;
3418 case GB_LAND_opcode : return (GxB_LAND_SECOND_BOOL) ;
3419 case GB_LXOR_opcode : return (GxB_LXOR_SECOND_BOOL) ;
3420 case GB_EQ_opcode : return (GxB_EQ_SECOND_BOOL ) ;
3421 case GB_ANY_opcode : return (GxB_ANY_SECOND_BOOL ) ;
3422 default : ;
3423 }
3424 break ;
3425
3426 case GB_PAIR_opcode :
3427
3428 switch (add_opcode)
3429 {
3430 case GB_LOR_opcode : return (GxB_LOR_PAIR_BOOL ) ;
3431 case GB_LAND_opcode : return (GxB_LAND_PAIR_BOOL ) ;
3432 case GB_LXOR_opcode : return (GxB_LXOR_PAIR_BOOL ) ;
3433 case GB_EQ_opcode : return (GxB_EQ_PAIR_BOOL ) ;
3434 case GB_ANY_opcode : return (GxB_ANY_PAIR_BOOL ) ;
3435 default : ;
3436 }
3437 break ;
3438
3439 case GB_LOR_opcode :
3440
3441 switch (add_opcode)
3442 {
3443 case GB_LOR_opcode : return (GxB_LOR_LOR_BOOL ) ;
3444 case GB_LAND_opcode : return (GrB_LAND_LOR_SEMIRING_BOOL ) ;
3445 case GB_LXOR_opcode : return (GxB_LXOR_LOR_BOOL ) ;
3446 case GB_EQ_opcode : return (GrB_LXNOR_LOR_SEMIRING_BOOL) ;
3447 case GB_ANY_opcode : return (GxB_ANY_LOR_BOOL ) ;
3448 default : ;
3449 }
3450 break ;
3451
3452 case GB_LAND_opcode :
3453
3454 switch (add_opcode)
3455 {
3456 case GB_LOR_opcode : return (GrB_LOR_LAND_SEMIRING_BOOL ) ;
3457 case GB_LAND_opcode : return (GxB_LAND_LAND_BOOL ) ;
3458 case GB_LXOR_opcode : return (GrB_LXOR_LAND_SEMIRING_BOOL) ;
3459 case GB_EQ_opcode : return (GxB_EQ_LAND_BOOL ) ;
3460 case GB_ANY_opcode : return (GxB_ANY_LAND_BOOL ) ;
3461 default : ;
3462 }
3463 break ;
3464
3465 case GB_LXOR_opcode :
3466
3467 switch (add_opcode)
3468 {
3469 case GB_LOR_opcode : return (GxB_LOR_LXOR_BOOL ) ;
3470 case GB_LAND_opcode : return (GxB_LAND_LXOR_BOOL ) ;
3471 case GB_LXOR_opcode : return (GxB_LXOR_LXOR_BOOL ) ;
3472 case GB_EQ_opcode : return (GxB_EQ_LXOR_BOOL ) ;
3473 case GB_ANY_opcode : return (GxB_ANY_LXOR_BOOL ) ;
3474 default : ;
3475 }
3476 break ;
3477
3478 case GB_EQ_opcode :
3479
3480 switch (add_opcode)
3481 {
3482 case GB_LOR_opcode : return (GxB_LOR_EQ_BOOL ) ;
3483 case GB_LAND_opcode : return (GxB_LAND_EQ_BOOL) ;
3484 case GB_LXOR_opcode : return (GxB_LXOR_EQ_BOOL) ;
3485 case GB_EQ_opcode : return (GxB_EQ_EQ_BOOL ) ;
3486 case GB_ANY_opcode : return (GxB_ANY_EQ_BOOL ) ;
3487 default : ;
3488 }
3489 break ;
3490
3491 case GB_GT_opcode :
3492
3493 switch (add_opcode)
3494 {
3495 case GB_LOR_opcode : return (GxB_LOR_GT_BOOL ) ;
3496 case GB_LAND_opcode : return (GxB_LAND_GT_BOOL) ;
3497 case GB_LXOR_opcode : return (GxB_LXOR_GT_BOOL) ;
3498 case GB_EQ_opcode : return (GxB_EQ_GT_BOOL ) ;
3499 case GB_ANY_opcode : return (GxB_ANY_GT_BOOL ) ;
3500 default : ;
3501 }
3502 break ;
3503
3504 case GB_LT_opcode :
3505
3506 switch (add_opcode)
3507 {
3508 case GB_LOR_opcode : return (GxB_LOR_LT_BOOL ) ;
3509 case GB_LAND_opcode : return (GxB_LAND_LT_BOOL) ;
3510 case GB_LXOR_opcode : return (GxB_LXOR_LT_BOOL) ;
3511 case GB_EQ_opcode : return (GxB_EQ_LT_BOOL ) ;
3512 case GB_ANY_opcode : return (GxB_ANY_LT_BOOL ) ;
3513 default : ;
3514 }
3515 break ;
3516
3517 case GB_GE_opcode :
3518
3519 switch (add_opcode)
3520 {
3521 case GB_LOR_opcode : return (GxB_LOR_GE_BOOL ) ;
3522 case GB_LAND_opcode : return (GxB_LAND_GE_BOOL) ;
3523 case GB_LXOR_opcode : return (GxB_LXOR_GE_BOOL) ;
3524 case GB_EQ_opcode : return (GxB_EQ_GE_BOOL ) ;
3525 case GB_ANY_opcode : return (GxB_ANY_GE_BOOL ) ;
3526 default : ;
3527 }
3528 break ;
3529
3530 case GB_LE_opcode :
3531
3532 switch (add_opcode)
3533 {
3534 case GB_LOR_opcode : return (GxB_LOR_LE_BOOL ) ;
3535 case GB_LAND_opcode : return (GxB_LAND_LE_BOOL) ;
3536 case GB_LXOR_opcode : return (GxB_LXOR_LE_BOOL) ;
3537 case GB_EQ_opcode : return (GxB_EQ_LE_BOOL ) ;
3538 case GB_ANY_opcode : return (GxB_ANY_LE_BOOL ) ;
3539 default : ;
3540 }
3541 break ;
3542
3543 default : ;
3544 }
3545 }
3546
3547 //--------------------------------------------------------------------------
3548 // not a built-in semiring
3549 //--------------------------------------------------------------------------
3550
3551 return (NULL) ;
3552 }
3553
3554