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
|
//------------------------------------------------------------------------------
// GB_AxB_positional_factory.c: switch factory for C=A*B for positional ops
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
// the additive operator is a monoid, where all types of x,y,z are int64_t or
// int32_t
ASSERT (xcode == zcode) ;
ASSERT (ycode == zcode) ;
ASSERT (GB_OPCODE_IS_POSITIONAL (mult_binop_code)) ;
{
if (zcode == GB_INT32_code)
{
switch (add_binop_code)
{
case GB_MIN_binop_code : GB_AxB_WORKER (_min, GB_MNAME, _int32)
case GB_MAX_binop_code : GB_AxB_WORKER (_max, GB_MNAME, _int32)
case GB_TIMES_binop_code : GB_AxB_WORKER (_times, GB_MNAME, _int32)
case GB_PLUS_binop_code : GB_AxB_WORKER (_plus, GB_MNAME, _int32)
#ifndef GB_NO_ANY_MONOID
case GB_ANY_binop_code : GB_AxB_WORKER (_any, GB_MNAME, _int32)
#endif
default: ;
}
}
else // zcode == GB_INT64_code
{
ASSERT (zcode == GB_INT64_code) ;
switch (add_binop_code)
{
case GB_MIN_binop_code : GB_AxB_WORKER (_min, GB_MNAME, _int64)
case GB_MAX_binop_code : GB_AxB_WORKER (_max, GB_MNAME, _int64)
case GB_TIMES_binop_code : GB_AxB_WORKER (_times, GB_MNAME, _int64)
case GB_PLUS_binop_code : GB_AxB_WORKER (_plus, GB_MNAME, _int64)
#ifndef GB_NO_ANY_MONOID
case GB_ANY_binop_code : GB_AxB_WORKER (_any, GB_MNAME, _int64)
#endif
default: ;
}
}
}
#undef GB_MNAME
|