experimental/utility/LAGraph_complex.c
GrB_Info LAGraph_Complex_init ( )
{

    GrB_Info info ;

    //--------------------------------------------------------------------------
    // create the Complex type
    //--------------------------------------------------------------------------

    OK (GrB_Type_new (&LAGraph_ComplexFP64, sizeof (C))) ;

    #undef C
    #undef D
    #define C LAGraph_ComplexFP64
    #define D GrB_FP64

    //--------------------------------------------------------------------------
    // create the Complex binary operators, CxC->C
    //--------------------------------------------------------------------------

    OK (GrB_BinaryOp_new (&LAGraph_FIRST_ComplexFP64       , complexfp64_first       , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_SECOND_ComplexFP64      , complexfp64_second      , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_MIN_ComplexFP64         , complexfp64_min         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_MAX_ComplexFP64         , complexfp64_max         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_PLUS_ComplexFP64        , complexfp64_plus        , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_MINUS_ComplexFP64       , complexfp64_minus       , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_RMINUS_ComplexFP64      , complexfp64_rminus      , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_TIMES_ComplexFP64       , complexfp64_times       , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_DIV_ComplexFP64         , complexfp64_div         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_RDIV_ComplexFP64        , complexfp64_rdiv        , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_PAIR_ComplexFP64        , complexfp64_pair        , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ANY_ComplexFP64         , complexfp64_any         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_SKEW_ComplexFP64        , complexfp64_skew        , GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_HERMITIAN_ComplexFP64   , complexfp64_hermitian   , GrB_BOOL, C, C)) ;

    //--------------------------------------------------------------------------
    // create the Complex binary comparison operators, CxC -> C
    //--------------------------------------------------------------------------

    OK (GrB_BinaryOp_new (&LAGraph_ISEQ_ComplexFP64 , complexfp64_iseq ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISNE_ComplexFP64 , complexfp64_isne ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISGT_ComplexFP64 , complexfp64_isgt ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISLT_ComplexFP64 , complexfp64_islt ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISGE_ComplexFP64 , complexfp64_isge ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISLE_ComplexFP64 , complexfp64_isle ,  C, C, C)) ;

    //--------------------------------------------------------------------------
    // create the Complex boolean operators, CxC -> C
    //--------------------------------------------------------------------------

    OK (GrB_BinaryOp_new (&LAGraph_OR_ComplexFP64  , complexfp64_or  ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_AND_ComplexFP64 , complexfp64_and ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_XOR_ComplexFP64 , complexfp64_xor ,  C, C, C)) ;

    //--------------------------------------------------------------------------
    // create the Complex binary operators, CxC -> bool
    //--------------------------------------------------------------------------

    OK (GrB_BinaryOp_new (&LAGraph_EQ_ComplexFP64 , complexfp64_eq ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_NE_ComplexFP64 , complexfp64_ne ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_GT_ComplexFP64 , complexfp64_gt ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_LT_ComplexFP64 , complexfp64_lt ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_GE_ComplexFP64 , complexfp64_ge ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_LE_ComplexFP64 , complexfp64_le ,  GrB_BOOL, C, C)) ;

    //--------------------------------------------------------------------------
    // create the Complex binary operator, double x double -> C
    //--------------------------------------------------------------------------

    OK (GrB_BinaryOp_new (&LAGraph_COMPLEX_ComplexFP64, complexfp64_complex, C, D, D)) ;

    //--------------------------------------------------------------------------
    // create the Complex unary operators, C->C
    //--------------------------------------------------------------------------

    OK (GrB_UnaryOp_new (&LAGraph_ONE_ComplexFP64       , complexfp64_one       , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_IDENTITY_ComplexFP64  , complexfp64_identity  , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_AINV_ComplexFP64      , complexfp64_ainv      , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ABS_ComplexFP64       , complexfp64_abs       , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_MINV_ComplexFP64      , complexfp64_minv      , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_NOT_ComplexFP64       , complexfp64_not       , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_CONJ_ComplexFP64      , complexfp64_conj      , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ISONE_ComplexFP64     , complexfp64_isone     , GrB_BOOL, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_TRUE_BOOL_ComplexFP64 , complexfp64_true_bool , GrB_BOOL, C)) ;

    //--------------------------------------------------------------------------
    // create the unary functions, C -> double
    //--------------------------------------------------------------------------

    OK (GrB_UnaryOp_new (&LAGraph_REAL_ComplexFP64  , complexfp64_real  , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_IMAG_ComplexFP64  , complexfp64_imag  , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_CABS_ComplexFP64  , complexfp64_cabs  , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ANGLE_ComplexFP64 , complexfp64_angle , D, C)) ;

    //--------------------------------------------------------------------------
    // create the unary functions, double -> C
    //--------------------------------------------------------------------------

    OK (GrB_UnaryOp_new (&LAGraph_COMPLEX_REAL_ComplexFP64 , complexfp64_complex_real , C, D)) ;
    OK (GrB_UnaryOp_new (&LAGraph_COMPLEX_IMAG_ComplexFP64 , complexfp64_complex_imag , C, D)) ;

    //--------------------------------------------------------------------------
    // create the Complex monoids
    //--------------------------------------------------------------------------

    OK (GrB_Monoid_new_UDT (&LAGraph_PLUS_ComplexFP64_MONOID,  LAGraph_PLUS_ComplexFP64,  &LAGraph_ComplexFP64_0)) ;
    OK (GrB_Monoid_new_UDT (&LAGraph_TIMES_ComplexFP64_MONOID, LAGraph_TIMES_ComplexFP64, &LAGraph_ComplexFP64_1)) ;

    //--------------------------------------------------------------------------
    // create the Complex plus-times semiring
    //--------------------------------------------------------------------------

    // more could be created, but this suffices for testing GraphBLAS
    OK (GrB_Semiring_new
        (&LAGraph_PLUS_TIMES_ComplexFP64, LAGraph_PLUS_ComplexFP64_MONOID, LAGraph_TIMES_ComplexFP64)) ;

    return (GrB_SUCCESS) ;
}
//------------------------------------------------------------------------------
// LAGraph_ComplexFP64_init: create the complex type, operators, monoids, and semiring
//------------------------------------------------------------------------------
create the complex type, operators, monoids, and semiring
create the complex type operators monoids and semiring
GrB_Info LAGraph_Complex_init ( )
{
    GrB_Info info ;
    OK (GrB_Type_new (&LAGraph_ComplexFP64, sizeof (C))) ;
    #undef C
    #undef D
    #define C LAGraph_ComplexFP64
    #define D GrB_FP64
    OK (GrB_BinaryOp_new (&LAGraph_FIRST_ComplexFP64       , complexfp64_first       , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_SECOND_ComplexFP64      , complexfp64_second      , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_MIN_ComplexFP64         , complexfp64_min         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_MAX_ComplexFP64         , complexfp64_max         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_PLUS_ComplexFP64        , complexfp64_plus        , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_MINUS_ComplexFP64       , complexfp64_minus       , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_RMINUS_ComplexFP64      , complexfp64_rminus      , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_TIMES_ComplexFP64       , complexfp64_times       , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_DIV_ComplexFP64         , complexfp64_div         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_RDIV_ComplexFP64        , complexfp64_rdiv        , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_PAIR_ComplexFP64        , complexfp64_pair        , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ANY_ComplexFP64         , complexfp64_any         , C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_SKEW_ComplexFP64        , complexfp64_skew        , GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_HERMITIAN_ComplexFP64   , complexfp64_hermitian   , GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISEQ_ComplexFP64 , complexfp64_iseq ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISNE_ComplexFP64 , complexfp64_isne ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISGT_ComplexFP64 , complexfp64_isgt ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISLT_ComplexFP64 , complexfp64_islt ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISGE_ComplexFP64 , complexfp64_isge ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_ISLE_ComplexFP64 , complexfp64_isle ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_OR_ComplexFP64  , complexfp64_or  ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_AND_ComplexFP64 , complexfp64_and ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_XOR_ComplexFP64 , complexfp64_xor ,  C, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_EQ_ComplexFP64 , complexfp64_eq ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_NE_ComplexFP64 , complexfp64_ne ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_GT_ComplexFP64 , complexfp64_gt ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_LT_ComplexFP64 , complexfp64_lt ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_GE_ComplexFP64 , complexfp64_ge ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_LE_ComplexFP64 , complexfp64_le ,  GrB_BOOL, C, C)) ;
    OK (GrB_BinaryOp_new (&LAGraph_COMPLEX_ComplexFP64, complexfp64_complex, C, D, D)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ONE_ComplexFP64       , complexfp64_one       , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_IDENTITY_ComplexFP64  , complexfp64_identity  , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_AINV_ComplexFP64      , complexfp64_ainv      , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ABS_ComplexFP64       , complexfp64_abs       , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_MINV_ComplexFP64      , complexfp64_minv      , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_NOT_ComplexFP64       , complexfp64_not       , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_CONJ_ComplexFP64      , complexfp64_conj      , C, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ISONE_ComplexFP64     , complexfp64_isone     , GrB_BOOL, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_TRUE_BOOL_ComplexFP64 , complexfp64_true_bool , GrB_BOOL, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_REAL_ComplexFP64  , complexfp64_real  , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_IMAG_ComplexFP64  , complexfp64_imag  , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_CABS_ComplexFP64  , complexfp64_cabs  , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_ANGLE_ComplexFP64 , complexfp64_angle , D, C)) ;
    OK (GrB_UnaryOp_new (&LAGraph_COMPLEX_REAL_ComplexFP64 , complexfp64_complex_real , C, D)) ;
    OK (GrB_UnaryOp_new (&LAGraph_COMPLEX_IMAG_ComplexFP64 , complexfp64_complex_imag , C, D)) ;
    OK (GrB_Monoid_new_UDT (&LAGraph_PLUS_ComplexFP64_MONOID,  LAGraph_PLUS_ComplexFP64,  &LAGraph_ComplexFP64_0)) ;
    OK (GrB_Monoid_new_UDT (&LAGraph_TIMES_ComplexFP64_MONOID, LAGraph_TIMES_ComplexFP64, &LAGraph_ComplexFP64_1)) ;
    OK (GrB_Semiring_new
        (&LAGraph_PLUS_TIMES_ComplexFP64, LAGraph_PLUS_ComplexFP64_MONOID, LAGraph_TIMES_ComplexFP64)) ;
    return (GrB_SUCCESS) ;
}
GrB_Info LAGraph_Complex_init ( ) { GrB_Info info ; OK ( GrB_Type_new ( & LAGraph_ComplexFP64 , sizeof ( C ) ) ) ; #undef  C #undef  D #define C  LAGraph_ComplexFP64 #define D  GrB_FP64 OK ( GrB_BinaryOp_new ( & LAGraph_FIRST_ComplexFP64 , complexfp64_first , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_SECOND_ComplexFP64 , complexfp64_second , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_MIN_ComplexFP64 , complexfp64_min , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_MAX_ComplexFP64 , complexfp64_max , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_PLUS_ComplexFP64 , complexfp64_plus , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_MINUS_ComplexFP64 , complexfp64_minus , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_RMINUS_ComplexFP64 , complexfp64_rminus , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_TIMES_ComplexFP64 , complexfp64_times , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_DIV_ComplexFP64 , complexfp64_div , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_RDIV_ComplexFP64 , complexfp64_rdiv , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_PAIR_ComplexFP64 , complexfp64_pair , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ANY_ComplexFP64 , complexfp64_any , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_SKEW_ComplexFP64 , complexfp64_skew , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_HERMITIAN_ComplexFP64 , complexfp64_hermitian , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ISEQ_ComplexFP64 , complexfp64_iseq , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ISNE_ComplexFP64 , complexfp64_isne , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ISGT_ComplexFP64 , complexfp64_isgt , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ISLT_ComplexFP64 , complexfp64_islt , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ISGE_ComplexFP64 , complexfp64_isge , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_ISLE_ComplexFP64 , complexfp64_isle , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_OR_ComplexFP64 , complexfp64_or , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_AND_ComplexFP64 , complexfp64_and , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_XOR_ComplexFP64 , complexfp64_xor , C , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_EQ_ComplexFP64 , complexfp64_eq , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_NE_ComplexFP64 , complexfp64_ne , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_GT_ComplexFP64 , complexfp64_gt , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_LT_ComplexFP64 , complexfp64_lt , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_GE_ComplexFP64 , complexfp64_ge , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_LE_ComplexFP64 , complexfp64_le , GrB_BOOL , C , C ) ) ; OK ( GrB_BinaryOp_new ( & LAGraph_COMPLEX_ComplexFP64 , complexfp64_complex , C , D , D ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_ONE_ComplexFP64 , complexfp64_one , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_IDENTITY_ComplexFP64 , complexfp64_identity , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_AINV_ComplexFP64 , complexfp64_ainv , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_ABS_ComplexFP64 , complexfp64_abs , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_MINV_ComplexFP64 , complexfp64_minv , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_NOT_ComplexFP64 , complexfp64_not , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_CONJ_ComplexFP64 , complexfp64_conj , C , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_ISONE_ComplexFP64 , complexfp64_isone , GrB_BOOL , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_TRUE_BOOL_ComplexFP64 , complexfp64_true_bool , GrB_BOOL , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_REAL_ComplexFP64 , complexfp64_real , D , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_IMAG_ComplexFP64 , complexfp64_imag , D , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_CABS_ComplexFP64 , complexfp64_cabs , D , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_ANGLE_ComplexFP64 , complexfp64_angle , D , C ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_COMPLEX_REAL_ComplexFP64 , complexfp64_complex_real , C , D ) ) ; OK ( GrB_UnaryOp_new ( & LAGraph_COMPLEX_IMAG_ComplexFP64 , complexfp64_complex_imag , C , D ) ) ; OK ( GrB_Monoid_new_UDT ( & LAGraph_PLUS_ComplexFP64_MONOID , LAGraph_PLUS_ComplexFP64 , & LAGraph_ComplexFP64_0 ) ) ; OK ( GrB_Monoid_new_UDT ( & LAGraph_TIMES_ComplexFP64_MONOID , LAGraph_TIMES_ComplexFP64 , & LAGraph_ComplexFP64_1 ) ) ; OK ( GrB_Semiring_new ( & LAGraph_PLUS_TIMES_ComplexFP64 , LAGraph_PLUS_ComplexFP64_MONOID , LAGraph_TIMES_ComplexFP64 ) ) ; return ( GrB_SUCCESS ) ; }
LAGraph_ComplexFP64_init: create the complex type, operators, monoids, and semiring
LAGraph_ComplexFP64_init : create the complex type operators monoids and semiring
//-------------------------------------------------------------------------- // create the Complex type //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex binary operators, CxC->C //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex binary comparison operators, CxC -> C //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex boolean operators, CxC -> C //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex binary operators, CxC -> bool //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex binary operator, double x double -> C //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex unary operators, C->C //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the unary functions, C -> double //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the unary functions, double -> C //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex monoids //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // create the Complex plus-times semiring //-------------------------------------------------------------------------- // more could be created, but this suffices for testing GraphBLAS