1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
//------------------------------------------------------------------------------
// gb_binop_to_monoid: convert a binary operator to the corresponding monoid
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
#include "gb_interface.h"
GrB_Monoid gb_binop_to_monoid // return monoid from a binary op
(
GrB_BinaryOp op
)
{
GrB_Monoid monoid ;
// MIN monoids:
if (op == GrB_MIN_INT8 ) monoid = GrB_MIN_MONOID_INT8 ;
else if (op == GrB_MIN_INT16 ) monoid = GrB_MIN_MONOID_INT16 ;
else if (op == GrB_MIN_INT32 ) monoid = GrB_MIN_MONOID_INT32 ;
else if (op == GrB_MIN_INT64 ) monoid = GrB_MIN_MONOID_INT64 ;
else if (op == GrB_MIN_UINT8 ) monoid = GrB_MIN_MONOID_UINT8 ;
else if (op == GrB_MIN_UINT16 ) monoid = GrB_MIN_MONOID_UINT16 ;
else if (op == GrB_MIN_UINT32 ) monoid = GrB_MIN_MONOID_UINT32 ;
else if (op == GrB_MIN_UINT64 ) monoid = GrB_MIN_MONOID_UINT64 ;
else if (op == GrB_MIN_FP32 ) monoid = GrB_MIN_MONOID_FP32 ;
else if (op == GrB_MIN_FP64 ) monoid = GrB_MIN_MONOID_FP64 ;
// MAX monoids:
else if (op == GrB_MAX_INT8 ) monoid = GrB_MAX_MONOID_INT8 ;
else if (op == GrB_MAX_INT16 ) monoid = GrB_MAX_MONOID_INT16 ;
else if (op == GrB_MAX_INT32 ) monoid = GrB_MAX_MONOID_INT32 ;
else if (op == GrB_MAX_INT64 ) monoid = GrB_MAX_MONOID_INT64 ;
else if (op == GrB_MAX_UINT8 ) monoid = GrB_MAX_MONOID_UINT8 ;
else if (op == GrB_MAX_UINT16 ) monoid = GrB_MAX_MONOID_UINT16 ;
else if (op == GrB_MAX_UINT32 ) monoid = GrB_MAX_MONOID_UINT32 ;
else if (op == GrB_MAX_UINT64 ) monoid = GrB_MAX_MONOID_UINT64 ;
else if (op == GrB_MAX_FP32 ) monoid = GrB_MAX_MONOID_FP32 ;
else if (op == GrB_MAX_FP64 ) monoid = GrB_MAX_MONOID_FP64 ;
// PLUS monoids:
else if (op == GrB_PLUS_INT8 ) monoid = GrB_PLUS_MONOID_INT8 ;
else if (op == GrB_PLUS_INT16 ) monoid = GrB_PLUS_MONOID_INT16 ;
else if (op == GrB_PLUS_INT32 ) monoid = GrB_PLUS_MONOID_INT32 ;
else if (op == GrB_PLUS_INT64 ) monoid = GrB_PLUS_MONOID_INT64 ;
else if (op == GrB_PLUS_UINT8 ) monoid = GrB_PLUS_MONOID_UINT8 ;
else if (op == GrB_PLUS_UINT16) monoid = GrB_PLUS_MONOID_UINT16 ;
else if (op == GrB_PLUS_UINT32) monoid = GrB_PLUS_MONOID_UINT32 ;
else if (op == GrB_PLUS_UINT64) monoid = GrB_PLUS_MONOID_UINT64 ;
else if (op == GrB_PLUS_FP32 ) monoid = GrB_PLUS_MONOID_FP32 ;
else if (op == GrB_PLUS_FP64 ) monoid = GrB_PLUS_MONOID_FP64 ;
// PLUS monoids for complex:
else if (op == GxB_PLUS_FC32 ) monoid = GxB_PLUS_FC32_MONOID ;
else if (op == GxB_PLUS_FC64 ) monoid = GxB_PLUS_FC64_MONOID ;
// TIMES monoids:
else if (op == GrB_TIMES_INT8 ) monoid = GrB_TIMES_MONOID_INT8 ;
else if (op == GrB_TIMES_INT16 ) monoid = GrB_TIMES_MONOID_INT16 ;
else if (op == GrB_TIMES_INT32 ) monoid = GrB_TIMES_MONOID_INT32 ;
else if (op == GrB_TIMES_INT64 ) monoid = GrB_TIMES_MONOID_INT64 ;
else if (op == GrB_TIMES_UINT8 ) monoid = GrB_TIMES_MONOID_UINT8 ;
else if (op == GrB_TIMES_UINT16) monoid = GrB_TIMES_MONOID_UINT16 ;
else if (op == GrB_TIMES_UINT32) monoid = GrB_TIMES_MONOID_UINT32 ;
else if (op == GrB_TIMES_UINT64) monoid = GrB_TIMES_MONOID_UINT64 ;
else if (op == GrB_TIMES_FP32 ) monoid = GrB_TIMES_MONOID_FP32 ;
else if (op == GrB_TIMES_FP64 ) monoid = GrB_TIMES_MONOID_FP64 ;
// TIMES monoids for complex:
else if (op == GxB_TIMES_FC32 ) monoid = GxB_TIMES_FC32_MONOID ;
else if (op == GxB_TIMES_FC64 ) monoid = GxB_TIMES_FC64_MONOID ;
// ANY monoids:
else if (op == GxB_ANY_BOOL ) monoid = GxB_ANY_BOOL_MONOID ;
else if (op == GxB_ANY_INT8 ) monoid = GxB_ANY_INT8_MONOID ;
else if (op == GxB_ANY_INT16 ) monoid = GxB_ANY_INT16_MONOID ;
else if (op == GxB_ANY_INT32 ) monoid = GxB_ANY_INT32_MONOID ;
else if (op == GxB_ANY_INT64 ) monoid = GxB_ANY_INT64_MONOID ;
else if (op == GxB_ANY_UINT8 ) monoid = GxB_ANY_UINT8_MONOID ;
else if (op == GxB_ANY_UINT16) monoid = GxB_ANY_UINT16_MONOID ;
else if (op == GxB_ANY_UINT32) monoid = GxB_ANY_UINT32_MONOID ;
else if (op == GxB_ANY_UINT64) monoid = GxB_ANY_UINT64_MONOID ;
else if (op == GxB_ANY_FP32 ) monoid = GxB_ANY_FP32_MONOID ;
else if (op == GxB_ANY_FP64 ) monoid = GxB_ANY_FP64_MONOID ;
else if (op == GxB_ANY_FC32 ) monoid = GxB_ANY_FC32_MONOID ;
else if (op == GxB_ANY_FC64 ) monoid = GxB_ANY_FC64_MONOID ;
// Boolean monoids:
else if (op == GrB_LOR ) monoid = GrB_LOR_MONOID_BOOL ;
else if (op == GrB_LAND ) monoid = GrB_LAND_MONOID_BOOL ;
else if (op == GrB_LXOR ) monoid = GrB_LXOR_MONOID_BOOL ;
// these two operators are identical:
else if (op == GrB_EQ_BOOL ||
op == GrB_LXNOR ) monoid = GrB_LXNOR_MONOID_BOOL ;
// BOR monoids (bitwise or):
else if (op == GrB_BOR_UINT8 ) monoid = GxB_BOR_UINT8_MONOID ;
else if (op == GrB_BOR_UINT16 ) monoid = GxB_BOR_UINT16_MONOID ;
else if (op == GrB_BOR_UINT32 ) monoid = GxB_BOR_UINT32_MONOID ;
else if (op == GrB_BOR_UINT64 ) monoid = GxB_BOR_UINT64_MONOID ;
// BAND monoids (bitwise and):
else if (op == GrB_BAND_UINT8 ) monoid = GxB_BAND_UINT8_MONOID ;
else if (op == GrB_BAND_UINT16 ) monoid = GxB_BAND_UINT16_MONOID ;
else if (op == GrB_BAND_UINT32 ) monoid = GxB_BAND_UINT32_MONOID ;
else if (op == GrB_BAND_UINT64 ) monoid = GxB_BAND_UINT64_MONOID ;
// BXOR monoids (bitwise xor):
else if (op == GrB_BXOR_UINT8 ) monoid = GxB_BXOR_UINT8_MONOID ;
else if (op == GrB_BXOR_UINT16 ) monoid = GxB_BXOR_UINT16_MONOID ;
else if (op == GrB_BXOR_UINT32 ) monoid = GxB_BXOR_UINT32_MONOID ;
else if (op == GrB_BXOR_UINT64 ) monoid = GxB_BXOR_UINT64_MONOID ;
// BXNOR monoids (bitwise xnor):
else if (op == GrB_BXNOR_UINT8 ) monoid = GxB_BXNOR_UINT8_MONOID ;
else if (op == GrB_BXNOR_UINT16 ) monoid = GxB_BXNOR_UINT16_MONOID ;
else if (op == GrB_BXNOR_UINT32 ) monoid = GxB_BXNOR_UINT32_MONOID ;
else if (op == GrB_BXNOR_UINT64 ) monoid = GxB_BXNOR_UINT64_MONOID ;
else
{
ERROR ("not a valid monoid") ;
}
return (monoid) ;
}
|