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