Ejemplo n.º 1
0
/* Call this function to initialize these functions into a function list */
int exprFuncListInit(exprFuncList *flist)
    {
    int err;

    if(flist == NULL)
        return EXPR_ERROR_NULLPOINTER;

    EXPR_ADDFUNC_TYPE(EXIT_CMD, EXPR_NODEFUNC_EXIT, 1, 1, 0, 0); // safe-exit the program
    EXPR_ADDFUNC_TYPE(MSS_CMD, EXPR_NODEFUNC_MSS, 0, 0, 0, 0);
    EXPR_ADDFUNC_TYPE("abs", EXPR_NODEFUNC_ABS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("mod", EXPR_NODEFUNC_MOD, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("ipart", EXPR_NODEFUNC_IPART, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("fpart", EXPR_NODEFUNC_FPART, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("min", EXPR_NODEFUNC_MIN, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE("max", EXPR_NODEFUNC_MAX, 1, -1, 0, 0);

    // MACRO MODIFICATE CON GLI IDENTIFIER DI DEFAULT
    // DEL MIO PROGRAMMA

    EXPR_ADDFUNC_TYPE(IDENTIFIER_BITCOUNTER, EXPR_NODEFUNC_BITCOUNTER, 2, 2, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_VERSION, EXPR_NODEFUNC_VERSION, 0, 0, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ALGEBRA, EXPR_NODEFUNC_ALGEBRA, 0, 1, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_ADDIZIONEBINARIA, EXPR_NODEFUNC_BINSUM, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOTTRAZIONEBINARIA, EXPR_NODEFUNC_BINSUB, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COMPLEMENT, EXPR_NODEFUNC_COMP, 2, 2, 0, 0);
    //
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ELEVAMENTOAPOTENZA, EXPR_NODEFUNC_POW, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_RADICEQUADRATA, EXPR_NODEFUNC_SQRT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_RADICECUBICA, EXPR_NODEFUNC_CBRT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_RADICENESIMA, EXPR_NODEFUNC_ROOT, 2, 2, 0, 0);
    
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SINANDSINH, EXPR_NODEFUNC_SIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SINANDSINH"h", EXPR_NODEFUNC_SINH, 1, 1, 0, 0);
    //
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSCANDCSCH, EXPR_NODEFUNC_CSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSCANDCSCH"h", EXPR_NODEFUNC_CSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ASINANDASINH, EXPR_NODEFUNC_ASIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ASINANDASINH"h", EXPR_NODEFUNC_ASINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ACSCANDACSCH, EXPR_NODEFUNC_ACSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ACSCANDACSCH"h", EXPR_NODEFUNC_ACSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COSANDCOSH, EXPR_NODEFUNC_COS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COSANDCOSH"h", EXPR_NODEFUNC_COSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SECANDSECH, EXPR_NODEFUNC_SEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SECANDSECH"h", EXPR_NODEFUNC_SECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ACOSANDACOSH, EXPR_NODEFUNC_ACOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ACOSANDACOSH"h", EXPR_NODEFUNC_ACOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ASECANDASECH, EXPR_NODEFUNC_ASEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ASECANDASECH"h", EXPR_NODEFUNC_ASECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_TANANDTANH, EXPR_NODEFUNC_TAN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_TANANDTANH"h", EXPR_NODEFUNC_TANH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COTANDCOTH, EXPR_NODEFUNC_COT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COTANDCOTH"h", EXPR_NODEFUNC_COTH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ATANANDATANH, EXPR_NODEFUNC_ATAN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ATANANDATANH"h", EXPR_NODEFUNC_ATANH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ACOTANDACOTH, EXPR_NODEFUNC_ACOT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ACOTANDACOTH"h", EXPR_NODEFUNC_ACOTH, 1, 1, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSINANDHSINH, EXPR_NODEFUNC_HSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSINANDHSINH"h", EXPR_NODEFUNC_HSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSINANDQSINH, EXPR_NODEFUNC_QSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSINANDQSINH"h", EXPR_NODEFUNC_QSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOSANDHCOSH, EXPR_NODEFUNC_HCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOSANDHCOSH"h", EXPR_NODEFUNC_HCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOSANDQCOSH, EXPR_NODEFUNC_QCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOSANDQCOSH"h", EXPR_NODEFUNC_QCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSECANDHSECH, EXPR_NODEFUNC_HSEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSECANDHSECH"h", EXPR_NODEFUNC_HSECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSECANDQSECH, EXPR_NODEFUNC_QSEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSECANDQSECH"h", EXPR_NODEFUNC_QSECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCSCANDHCSCH, EXPR_NODEFUNC_HCSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCSCANDHCSCH"h", EXPR_NODEFUNC_HCSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCSCANDQCSCH, EXPR_NODEFUNC_QCSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCSCANDQCSCH"h", EXPR_NODEFUNC_QCSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HTANANDHTANH, EXPR_NODEFUNC_HTAN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HTANANDHTANH"h", EXPR_NODEFUNC_HTANH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QTANANDQTANH, EXPR_NODEFUNC_QTAN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QTANANDQTANH"h", EXPR_NODEFUNC_QTANH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOTANDHCOTH, EXPR_NODEFUNC_HCOT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOTANDHCOTH"h", EXPR_NODEFUNC_HCOTH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOTANDQCOTH, EXPR_NODEFUNC_QCOT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOTANDQCOTH"h", EXPR_NODEFUNC_QCOTH, 1, 1, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_VSINANDVSINH, EXPR_NODEFUNC_VSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_VSINANDVSINH"h", EXPR_NODEFUNC_VSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVSINANDCVSINH, EXPR_NODEFUNC_CVSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVSINANDCVSINH"h", EXPR_NODEFUNC_CVSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_VCOSANDVCOSH, EXPR_NODEFUNC_VCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_VCOSANDVCOSH"h", EXPR_NODEFUNC_VCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVCOSANDCVCOSH, EXPR_NODEFUNC_CVCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVCOSANDCVCOSH"h", EXPR_NODEFUNC_CVCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HVSINANDHVSINH, EXPR_NODEFUNC_HVSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HVSINANDHVSINH"h", EXPR_NODEFUNC_HVSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCVSINANDHCVSINH, EXPR_NODEFUNC_HCVSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCVSINANDHCVSINH"h", EXPR_NODEFUNC_HCVSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QVSINANDQVSINH, EXPR_NODEFUNC_QVSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QVSINANDQVSINH"h", EXPR_NODEFUNC_QVSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCVSINANDQCVSINH, EXPR_NODEFUNC_QCVSIN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCVSINANDQCVSINH"h", EXPR_NODEFUNC_QCVSINH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HVCOSANDHVCOSH, EXPR_NODEFUNC_HVCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HVCOSANDHVCOSH"h", EXPR_NODEFUNC_HVCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCVCOSANDHCVCOSH, EXPR_NODEFUNC_HCVCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCVCOSANDHCVCOSH"h", EXPR_NODEFUNC_HCVCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QVCOSANDQVCOSH, EXPR_NODEFUNC_QVCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QVCOSANDQVCOSH"h", EXPR_NODEFUNC_QVCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCVCOSANDQCVCOSH, EXPR_NODEFUNC_QCVCOS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCVCOSANDQCVCOSH"h", EXPR_NODEFUNC_QCVCOSH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ESECANDESECH, EXPR_NODEFUNC_ESEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ESECANDESECH"h", EXPR_NODEFUNC_ESECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ECSCANDECSCH, EXPR_NODEFUNC_ECSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ECSCANDECSCH"h", EXPR_NODEFUNC_ECSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HESECANDHESECH, EXPR_NODEFUNC_HESEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HESECANDHESECH"h", EXPR_NODEFUNC_HESECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HECSCANDHECSCH, EXPR_NODEFUNC_HECSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HECSCANDHECSCH"h", EXPR_NODEFUNC_HECSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QESECANDQESECH, EXPR_NODEFUNC_QESEC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QESECANDQESECH"h", EXPR_NODEFUNC_QESECH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QECSCANDQECSCH, EXPR_NODEFUNC_QECSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QECSCANDQECSCH"h", EXPR_NODEFUNC_QECSCH, 1, 1, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_SINCANDSINCH, EXPR_NODEFUNC_SINC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SINCANDSINCH"h", EXPR_NODEFUNC_SINCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSINCANDHSINCH, EXPR_NODEFUNC_HSINC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSINCANDHSINCH"h", EXPR_NODEFUNC_HSINCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSINCANDQSINCH, EXPR_NODEFUNC_QSINC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSINCANDQSINCH"h", EXPR_NODEFUNC_QSINCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COSCANDCOSCH, EXPR_NODEFUNC_COSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COSCANDCOSCH"h", EXPR_NODEFUNC_COSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOSCANDHCOSCH, EXPR_NODEFUNC_HCOSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOSCANDHCOSCH"h", EXPR_NODEFUNC_HCOSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOSCANDQCOSCH, EXPR_NODEFUNC_QCOSC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOSCANDQCOSCH"h", EXPR_NODEFUNC_QCOSCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SECCANDSECCH, EXPR_NODEFUNC_SECC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SECCANDSECCH"h", EXPR_NODEFUNC_SECCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSECCANDHSECCH, EXPR_NODEFUNC_HSECC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HSECCANDHSECCH"h", EXPR_NODEFUNC_HSECCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSECCANDQSECCH, EXPR_NODEFUNC_QSECC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QSECCANDQSECCH"h", EXPR_NODEFUNC_QSECCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSCCANDCSCCH, EXPR_NODEFUNC_CSCC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSCCANDCSCCH"h", EXPR_NODEFUNC_CSCCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCSCCANDHCSCCH, EXPR_NODEFUNC_HCSCC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCSCCANDHCSCCH"h", EXPR_NODEFUNC_HCSCCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCSCCANDQCSCCH, EXPR_NODEFUNC_QCSCC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCSCCANDQCSCCH"h", EXPR_NODEFUNC_QCSCCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_TANCANDTANCH, EXPR_NODEFUNC_TANC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_TANCANDTANCH"h", EXPR_NODEFUNC_TANCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HTANCANDHTANCH, EXPR_NODEFUNC_HTANC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HTANCANDHTANCH"h", EXPR_NODEFUNC_HTANCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QTANCANDQTANCH, EXPR_NODEFUNC_QTANC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QTANCANDQTANCH"h", EXPR_NODEFUNC_QTANCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COTCANDCOTCH, EXPR_NODEFUNC_COTC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COTCANDCOTCH"h", EXPR_NODEFUNC_COTCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOTCANDHCOTCH, EXPR_NODEFUNC_HCOTC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_HCOTCANDHCOTCH"h", EXPR_NODEFUNC_HCOTCH, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOTCANDQCOTCH, EXPR_NODEFUNC_QCOTC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QCOTCANDQCOTCH"h", EXPR_NODEFUNC_QCOTCH, 1, 1, 0, 0);

    //
    EXPR_ADDFUNC_TYPE(IDENTIFIER_ATAN2, EXPR_NODEFUNC_ATAN2, 2, 2, 0, 0);
    
    
	EXPR_ADDFUNC_TYPE(IDENTIFIER_CSIN, EXPR_NODEFUNC_CSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSIN"h", EXPR_NODEFUNC_CSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    // 
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCSC, EXPR_NODEFUNC_CCSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCSC"h", EXPR_NODEFUNC_CCSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CASIN, EXPR_NODEFUNC_CASIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CASIN"h", EXPR_NODEFUNC_CASINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CACSC, EXPR_NODEFUNC_CACSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CACSC"h", EXPR_NODEFUNC_CACSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOS, EXPR_NODEFUNC_CCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOS"h", EXPR_NODEFUNC_CCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSEC, EXPR_NODEFUNC_CSEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSEC"h", EXPR_NODEFUNC_CSECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CACOS, EXPR_NODEFUNC_CACOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CACOS"h", EXPR_NODEFUNC_CACOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CASEC, EXPR_NODEFUNC_CASEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CASEC"h", EXPR_NODEFUNC_CASECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CTAN, EXPR_NODEFUNC_CTAN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CTAN"h", EXPR_NODEFUNC_CTANH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOT, EXPR_NODEFUNC_CCOT, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOT"h", EXPR_NODEFUNC_CCOTH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CATAN, EXPR_NODEFUNC_CATAN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CATAN"h", EXPR_NODEFUNC_CATANH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CACOT, EXPR_NODEFUNC_CACOT, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CACOT"h", EXPR_NODEFUNC_CACOTH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)

    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSIN, EXPR_NODEFUNC_CHSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSIN"h", EXPR_NODEFUNC_CHSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSIN, EXPR_NODEFUNC_CQSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSIN"h", EXPR_NODEFUNC_CQSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOS, EXPR_NODEFUNC_CHCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOS"h", EXPR_NODEFUNC_CHCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOS, EXPR_NODEFUNC_CQCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOS"h", EXPR_NODEFUNC_CQCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSEC, EXPR_NODEFUNC_CHSEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSEC"h", EXPR_NODEFUNC_CHSECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSEC, EXPR_NODEFUNC_CQSEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSEC"h", EXPR_NODEFUNC_CQSECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCSC, EXPR_NODEFUNC_CHCSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCSC"h", EXPR_NODEFUNC_CHCSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCSC, EXPR_NODEFUNC_CQCSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCSC"h", EXPR_NODEFUNC_CQCSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHTAN, EXPR_NODEFUNC_CHTAN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHTAN"h", EXPR_NODEFUNC_CHTANH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQTAN, EXPR_NODEFUNC_CQTAN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQTAN"h", EXPR_NODEFUNC_CQTANH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOT, EXPR_NODEFUNC_CHCOT, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOT"h", EXPR_NODEFUNC_CHCOTH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOT, EXPR_NODEFUNC_CQCOT, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOT"h", EXPR_NODEFUNC_CQCOTH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)

    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVSIN, EXPR_NODEFUNC_CPXVSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVSIN"h", EXPR_NODEFUNC_CPXVSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCVSIN, EXPR_NODEFUNC_CCVSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCVSIN"h", EXPR_NODEFUNC_CCVSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVCOS, EXPR_NODEFUNC_CPXVCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CVCOS"h", EXPR_NODEFUNC_CPXVCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCVCOS, EXPR_NODEFUNC_CCVCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCVCOS"h", EXPR_NODEFUNC_CCVCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHVSIN, EXPR_NODEFUNC_CHVSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHVSIN"h", EXPR_NODEFUNC_CHVSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCVSIN, EXPR_NODEFUNC_CHCVSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCVSIN"h", EXPR_NODEFUNC_CHCVSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQVSIN, EXPR_NODEFUNC_CQVSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQVSIN"h", EXPR_NODEFUNC_CQVSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCVSIN, EXPR_NODEFUNC_CQCVSIN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCVSIN"h", EXPR_NODEFUNC_CQCVSINH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHVCOS, EXPR_NODEFUNC_CHVCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHVCOS"h", EXPR_NODEFUNC_CHVCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCVCOS, EXPR_NODEFUNC_CHCVCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCVCOS"h", EXPR_NODEFUNC_CHCVCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQVCOS, EXPR_NODEFUNC_CQVCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQVCOS"h", EXPR_NODEFUNC_CQVCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCVCOS, EXPR_NODEFUNC_CQCVCOS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCVCOS"h", EXPR_NODEFUNC_CQCVCOSH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CESEC, EXPR_NODEFUNC_CESEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CESEC"h", EXPR_NODEFUNC_CESECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CECSC, EXPR_NODEFUNC_CECSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CECSC"h", EXPR_NODEFUNC_CECSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHESEC, EXPR_NODEFUNC_CHESEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHESEC"h", EXPR_NODEFUNC_CHESECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHECSC, EXPR_NODEFUNC_CHECSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHECSC"h", EXPR_NODEFUNC_CHECSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQESEC, EXPR_NODEFUNC_CQESEC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQESEC"h", EXPR_NODEFUNC_CQESECH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQECSC, EXPR_NODEFUNC_CQECSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQECSC"h", EXPR_NODEFUNC_CQECSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)

    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSINC, EXPR_NODEFUNC_CSINC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSINC"h", EXPR_NODEFUNC_CSINCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSINC, EXPR_NODEFUNC_CHSINC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSINC"h", EXPR_NODEFUNC_CHSINCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSINC, EXPR_NODEFUNC_CQSINC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSINC"h", EXPR_NODEFUNC_CQSINCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOSC, EXPR_NODEFUNC_CCOSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOSC"h", EXPR_NODEFUNC_CCOSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOSC, EXPR_NODEFUNC_CHCOSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOSC"h", EXPR_NODEFUNC_CHCOSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOSC, EXPR_NODEFUNC_CQCOSC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOSC"h", EXPR_NODEFUNC_CQCOSCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSECC, EXPR_NODEFUNC_CSECC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSECC"h", EXPR_NODEFUNC_CSECCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSECC, EXPR_NODEFUNC_CHSECC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHSECC"h", EXPR_NODEFUNC_CHSECCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSECC, EXPR_NODEFUNC_CQSECC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQSECC"h", EXPR_NODEFUNC_CQSECCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCSCC, EXPR_NODEFUNC_CCSCC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCSCC"h", EXPR_NODEFUNC_CCSCCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCSCC, EXPR_NODEFUNC_CHCSCC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCSCC"h", EXPR_NODEFUNC_CHCSCCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCSCC, EXPR_NODEFUNC_CQCSCC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCSCC"h", EXPR_NODEFUNC_CQCSCCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CTANC, EXPR_NODEFUNC_CTANC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CTANC"h", EXPR_NODEFUNC_CTANCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHTANC, EXPR_NODEFUNC_CHTANC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHTANC"h", EXPR_NODEFUNC_CHTANCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQTANC, EXPR_NODEFUNC_CQTANC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQTANC"h", EXPR_NODEFUNC_CQTANCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOTC, EXPR_NODEFUNC_CCOTC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCOTC"h", EXPR_NODEFUNC_CCOTCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOTC, EXPR_NODEFUNC_CHCOTC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CHCOTC"h", EXPR_NODEFUNC_CHCOTCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOTC, EXPR_NODEFUNC_CQCOTC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CQCOTC"h", EXPR_NODEFUNC_CQCOTCH, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS)

    EXPR_ADDFUNC_TYPE(IDENTIFIER_MATRIXDET, EXPR_NODEFUNC_MATRIXDET, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MATRIXNORM, EXPR_NODEFUNC_MATRIXNORM, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MATRIXTRACE, EXPR_NODEFUNC_MATRIXTRACE, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MATRIXRANK, EXPR_NODEFUNC_MATRIXRANK, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MATRIXILLCHK, EXPR_NODEFUNC_MATRIXILLCHK, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SCALARPROD, EXPR_NODEFUNC_SCALARPROD, 1, -1, 0, 0);


    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO, EXPR_NODEFUNC_LOG, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO2, EXPR_NODEFUNC_LOG2, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("pow10", EXPR_NODEFUNC_POW10, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMON, EXPR_NODEFUNC_LN, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_EXPANDEXPC, EXPR_NODEFUNC_EXP, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_EXPANDEXPC"c", EXPR_NODEFUNC_EXPC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_EXP10ANDEXP10C, EXPR_NODEFUNC_EXP10, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_EXP10ANDEXP10C"c", EXPR_NODEFUNC_EXP10C, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_EXP2ANDEXP2C, EXPR_NODEFUNC_EXP2, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_EXP2ANDEXP2C"c", EXPR_NODEFUNC_EXP2C, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMOBN, EXPR_NODEFUNC_LOGN, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMOC, EXPR_NODEFUNC_LOGC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMON"c", EXPR_NODEFUNC_LNC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO2C, EXPR_NODEFUNC_LOG2C, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO1P, EXPR_NODEFUNC_LOG1P, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO1PC, EXPR_NODEFUNC_LOG1PC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO101P, EXPR_NODEFUNC_LOG101P, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO101PC, EXPR_NODEFUNC_LOG101PC, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO21P, EXPR_NODEFUNC_LOG21P, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_LOGARITMO21PC, EXPR_NODEFUNC_LOG21PC, 1, 1, 0, 0);
    
    
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CEXP, EXPR_NODEFUNC_CEXP, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CEXP"c", EXPR_NODEFUNC_CEXPC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CEXP10, EXPR_NODEFUNC_CEXP10, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CEXP10"c", EXPR_NODEFUNC_CEXP10C, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CEXP2, EXPR_NODEFUNC_CEXP2, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CEXP2"c", EXPR_NODEFUNC_CEXP2C, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CPOW, EXPR_NODEFUNC_CPOW, MAX_COMPLEX_UNITS<<1, MAX_COMPLEX_UNITS<<1, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CROOT, EXPR_NODEFUNC_CROOT, MAX_COMPLEX_UNITS<<1, MAX_COMPLEX_UNITS<<1, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CSQRT, EXPR_NODEFUNC_CSQRT, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CCBRT, EXPR_NODEFUNC_CCBRT, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOGN, EXPR_NODEFUNC_CLOGN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLN, EXPR_NODEFUNC_CLN, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLN"c", EXPR_NODEFUNC_CLNC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG, EXPR_NODEFUNC_CLOG, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG"c", EXPR_NODEFUNC_CLOGC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG2, EXPR_NODEFUNC_CLOG2, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG2"c", EXPR_NODEFUNC_CLOG2C, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG1P, EXPR_NODEFUNC_CLOG1P, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG1P"c", EXPR_NODEFUNC_CLOG1PC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG101P, EXPR_NODEFUNC_CLOG101P, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG101P"c", EXPR_NODEFUNC_CLOG101PC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG21P, EXPR_NODEFUNC_CLOG21P, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CLOG21P"c", EXPR_NODEFUNC_CLOG21PC, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 1, MAX_COMPLEX_UNITS);
    
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CARG, EXPR_NODEFUNC_CARG, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CABS, EXPR_NODEFUNC_CABS, MAX_COMPLEX_UNITS, MAX_COMPLEX_UNITS, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QABS, EXPR_NODEFUNC_QABS, MAX_QUATERNIONS_UNITS, MAX_QUATERNIONS_UNITS, 0, 0);
    
    EXPR_ADDFUNC_TYPE(IDENTIFIER_OABS, EXPR_NODEFUNC_OABS, MAX_OCTONIONS_UNITS, MAX_OCTONIONS_UNITS, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SABS, EXPR_NODEFUNC_SABS, MAX_SEDENIONS_UNITS, MAX_SEDENIONS_UNITS, 0, 0);

    
    
    EXPR_ADDFUNC_TYPE("ceil", EXPR_NODEFUNC_CEIL, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("floor", EXPR_NODEFUNC_FLOOR, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_RISOLUTOREEQUAZIONISECONDOGRADO, EXPR_NODEFUNC_SGEQSOLVER, 3, 3, 2, 2);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COMPLEXADD, EXPR_NODEFUNC_COMPLEXADD, MAX_COMPLEX_UNITS<<1, MAX_COMPLEX_UNITS<<1, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COMPLEXMUL, EXPR_NODEFUNC_COMPLEXMUL, MAX_COMPLEX_UNITS<<1, MAX_COMPLEX_UNITS<<1, 1, MAX_COMPLEX_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QUATERNIONSADD, EXPR_NODEFUNC_QUATERNIONSADD, MAX_QUATERNIONS_UNITS<<1, MAX_QUATERNIONS_UNITS<<1, MAX_QUATERNIONS_UNITS, MAX_QUATERNIONS_UNITS);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_QUATERNIONSMUL, EXPR_NODEFUNC_QUATERNIONSMUL, MAX_QUATERNIONS_UNITS<<1, MAX_QUATERNIONS_UNITS<<1, MAX_QUATERNIONS_UNITS, MAX_QUATERNIONS_UNITS);

    EXPR_ADDFUNC_TYPE("rand", EXPR_NODEFUNC_RAND, 0, 0, 1, 1);
    EXPR_ADDFUNC_TYPE("random", EXPR_NODEFUNC_RANDOM, 2, 2, 1, 1);
    EXPR_ADDFUNC_TYPE("randomize", EXPR_NODEFUNC_RANDOMIZE, 0, 0, 1, 1);
    EXPR_ADDFUNC_TYPE("deg", EXPR_NODEFUNC_DEG, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("rad", EXPR_NODEFUNC_RAD, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE("recttopolr", EXPR_NODEFUNC_RECTTOPOLR, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("recttopola", EXPR_NODEFUNC_RECTTOPOLA, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("poltorectx", EXPR_NODEFUNC_POLTORECTX, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("poltorecty", EXPR_NODEFUNC_POLTORECTY, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_CAMBIAMENTODIBASE, EXPR_NODEFUNC_CBASE, 3, 3, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_NESIMONUMEROPRIMO, EXPR_NODEFUNC_NPNUM, 1, 1, 0, 0);
    //
    EXPR_ADDFUNC_TYPE(IDENTIFIER_PRIMORIALE, EXPR_NODEFUNC_PRIMORIAL, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMAPRIMINNUMERIPRIMI, EXPR_NODEFUNC_FPNSUM, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_FIBONACCIALE, EXPR_NODEFUNC_FIBONACCIAL, 1, 1, 0, 0);
    //

    EXPR_ADDFUNC_TYPE(IDENTIFIER_MCM, EXPR_NODEFUNC_LCM, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MCD, EXPR_NODEFUNC_GCD, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_FATTORIALE, EXPR_NODEFUNC_FACT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SEMIFATTORIALE, EXPR_NODEFUNC_SFACT, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_STIRLING, EXPR_NODEFUNC_STIRLING, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_FIBONACCI, EXPR_NODEFUNC_FIBO, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_PERMUTATIONS, EXPR_NODEFUNC_PERMS, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_PERMUTATIONSREP, EXPR_NODEFUNC_PERMSREP, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_KPERMUTATIONS, EXPR_NODEFUNC_KPERMS, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_KPERMUTATIONSREP, EXPR_NODEFUNC_KPERMSREP, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COMBINATIONS, EXPR_NODEFUNC_COMBS, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COMBINATIONSREP, EXPR_NODEFUNC_COMBSREP, 2, 2, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMASUCCESSIONEGEOMETRICA, EXPR_NODEFUNC_GSUM, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMASUCCESSIONEARMONICA, EXPR_NODEFUNC_ASUM, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMASUCCESSIONEARMONICAGEN, EXPR_NODEFUNC_GASUM, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMASUCCESSIONEFIBONACCI, EXPR_NODEFUNC_FSUM, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMASUCCESSIONEFATTORIALE, EXPR_NODEFUNC_FASUM, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMASUCCESSIONESEMIFATTORIALE, EXPR_NODEFUNC_SFASUM, 1, 1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMAPRIMINNUMERI, EXPR_NODEFUNC_FNNSUM, 1, 1, 0, 0);

    EXPR_ADDFUNC_TYPE(IDENTIFIER_SOMMATORIA, EXPR_NODEFUNC_SUM, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_PRODUTTORIA, EXPR_NODEFUNC_PRODUCT, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MEDIA, EXPR_NODEFUNC_MEDIA, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MODE, EXPR_NODEFUNC_MODE, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_VARIANCE, EXPR_NODEFUNC_VARIANCE, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_COVARIANCE, EXPR_NODEFUNC_COVARIANCE, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_STDDEV, EXPR_NODEFUNC_STDDEV, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_OUTLIER, EXPR_NODEFUNC_OUTLIER, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_OUTLIER2, EXPR_NODEFUNC_OUTLIER2, 3, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MAP, EXPR_NODEFUNC_MAP, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MEDIAGEOMETRICA, EXPR_NODEFUNC_GEOMEDIA, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MEDIAARMONICA, EXPR_NODEFUNC_ARMEDIA, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MEDIAPOTENZA, EXPR_NODEFUNC_POWMEDIA, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_VALORECENTRALE, EXPR_NODEFUNC_CVAL, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_FIRSTQUARTILE, EXPR_NODEFUNC_FIRSTQUARTILE, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_MEDIANA, EXPR_NODEFUNC_MEDIANA, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE(IDENTIFIER_THIRDQUARTILE, EXPR_NODEFUNC_THIRDQUARTILE, 1, -1, 0, 0);
    
    //
    EXPR_ADDFUNC_TYPE("if", EXPR_NODEFUNC_IF, 3, 3, 0, 0);
    EXPR_ADDFUNC_TYPE("select", EXPR_NODEFUNC_SELECT, 3, 4, 0, 0);
    EXPR_ADDFUNC_TYPE("equal", EXPR_NODEFUNC_EQUAL, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("above", EXPR_NODEFUNC_ABOVE, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("below", EXPR_NODEFUNC_BELOW, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("avg", EXPR_NODEFUNC_AVG, 1, -1, 0, 0);
    EXPR_ADDFUNC_TYPE("clip", EXPR_NODEFUNC_CLIP, 3, 3, 0, 0);
    EXPR_ADDFUNC_TYPE("clamp", EXPR_NODEFUNC_CLAMP, 3, 3, 0, 0);
    EXPR_ADDFUNC_TYPE("pntchange", EXPR_NODEFUNC_PNTCHANGE, 5, 5, 0, 0);
    EXPR_ADDFUNC_TYPE("poly", EXPR_NODEFUNC_POLY, 2, -1, 0, 0);
    EXPR_ADDFUNC_TYPE("and", EXPR_NODEFUNC_AND, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("or", EXPR_NODEFUNC_OR, 2, 2, 0, 0);
    EXPR_ADDFUNC_TYPE("not", EXPR_NODEFUNC_NOT, 1 ,1, 0, 0);
    EXPR_ADDFUNC_TYPE("for", EXPR_NODEFUNC_FOR, 4, -1, 0, 0);
    EXPR_ADDFUNC_TYPE("many", EXPR_NODEFUNC_MANY, 1, -1, 0, 0);

    return EXPR_ERROR_NOERROR;
    }
Ejemplo n.º 2
0
/* Call this function to initialize these functions into a function list */
int exprFuncListInit(exprFuncList *flist)
{
  int err;

  if(flist == NULL)
    return EXPR_ERROR_NULLPOINTER;

  EXPR_ADDFUNC_TYPE("abs", EXPR_NODEFUNC_ABS, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("mod", EXPR_NODEFUNC_MOD, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("ipart", EXPR_NODEFUNC_IPART, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("fpart", EXPR_NODEFUNC_FPART, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("min", EXPR_NODEFUNC_MIN, 1, -1, 0, 0);
  EXPR_ADDFUNC_TYPE("max", EXPR_NODEFUNC_MAX, 1, -1, 0, 0);
  EXPR_ADDFUNC_TYPE("pow", EXPR_NODEFUNC_POW, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("sqrt", EXPR_NODEFUNC_SQRT, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("sin", EXPR_NODEFUNC_SIN, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("sinh", EXPR_NODEFUNC_SINH, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("asin", EXPR_NODEFUNC_ASIN, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("cos", EXPR_NODEFUNC_COS, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("cosh", EXPR_NODEFUNC_COSH, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("acos", EXPR_NODEFUNC_ACOS, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("tan", EXPR_NODEFUNC_TAN, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("tanh", EXPR_NODEFUNC_TANH, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("atan", EXPR_NODEFUNC_ATAN, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("atan2", EXPR_NODEFUNC_ATAN2, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("log", EXPR_NODEFUNC_LOG, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("pow10", EXPR_NODEFUNC_POW10, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("ln", EXPR_NODEFUNC_LN, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("exp", EXPR_NODEFUNC_EXP, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("logn", EXPR_NODEFUNC_LOGN, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("ceil", EXPR_NODEFUNC_CEIL, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("floor", EXPR_NODEFUNC_FLOOR, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("rand", EXPR_NODEFUNC_RAND, 0, 0, 1, 1);
  EXPR_ADDFUNC_TYPE("random", EXPR_NODEFUNC_RANDOM, 2, 2, 1, 1);
  EXPR_ADDFUNC_TYPE("randomize", EXPR_NODEFUNC_RANDOMIZE, 0, 0, 1, 1);
  EXPR_ADDFUNC_TYPE("deg", EXPR_NODEFUNC_DEG, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("rad", EXPR_NODEFUNC_RAD, 1, 1, 0, 0);
  EXPR_ADDFUNC_TYPE("recttopolr", EXPR_NODEFUNC_RECTTOPOLR, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("recttopola", EXPR_NODEFUNC_RECTTOPOLA, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("poltorectx", EXPR_NODEFUNC_POLTORECTX, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("poltorecty", EXPR_NODEFUNC_POLTORECTY, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("if", EXPR_NODEFUNC_IF, 3, 3, 0, 0);
  EXPR_ADDFUNC_TYPE("select", EXPR_NODEFUNC_SELECT, 3, 4, 0, 0);
  EXPR_ADDFUNC_TYPE("equal", EXPR_NODEFUNC_EQUAL, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("above", EXPR_NODEFUNC_ABOVE, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("below", EXPR_NODEFUNC_BELOW, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("avg", EXPR_NODEFUNC_AVG, 1, -1, 0, 0);
  EXPR_ADDFUNC_TYPE("clip", EXPR_NODEFUNC_CLIP, 3, 3, 0, 0);
  EXPR_ADDFUNC_TYPE("clamp", EXPR_NODEFUNC_CLAMP, 3, 3, 0, 0);
  EXPR_ADDFUNC_TYPE("pntchange", EXPR_NODEFUNC_PNTCHANGE, 5, 5, 0, 0);
  EXPR_ADDFUNC_TYPE("poly", EXPR_NODEFUNC_POLY, 2, -1, 0, 0);
  EXPR_ADDFUNC_TYPE("and", EXPR_NODEFUNC_AND, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("or", EXPR_NODEFUNC_OR, 2, 2, 0, 0);
  EXPR_ADDFUNC_TYPE("not", EXPR_NODEFUNC_NOT, 1 ,1, 0, 0);
  EXPR_ADDFUNC_TYPE("for", EXPR_NODEFUNC_FOR, 4, -1, 0, 0);
  EXPR_ADDFUNC_TYPE("many", EXPR_NODEFUNC_MANY, 1, -1, 0, 0);

  return EXPR_ERROR_NOERROR;
}