MCPcopy Create free account
hub / github.com/KratosMultiphysics/Kratos / te_eval

Function te_eval

external_libraries/tinyexpr/tinyexpr/tinyexpr.c:622–660  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

620
621
622double te_eval(const te_expr *n) {
623 if (!n) return NAN;
624
625 switch(TYPE_MASK(n->type)) {
626 case TE_CONSTANT: return n->value;
627 case TE_VARIABLE: return *n->bound;
628
629 case TE_FUNCTION0: case TE_FUNCTION1: case TE_FUNCTION2: case TE_FUNCTION3:
630 case TE_FUNCTION4: case TE_FUNCTION5: case TE_FUNCTION6: case TE_FUNCTION7:
631 switch(ARITY(n->type)) {
632 case 0: return TE_FUN(void)();
633 case 1: return TE_FUN(double)(M(0));
634 case 2: return TE_FUN(double, double)(M(0), M(1));
635 case 3: return TE_FUN(double, double, double)(M(0), M(1), M(2));
636 case 4: return TE_FUN(double, double, double, double)(M(0), M(1), M(2), M(3));
637 case 5: return TE_FUN(double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4));
638 case 6: return TE_FUN(double, double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4), M(5));
639 case 7: return TE_FUN(double, double, double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4), M(5), M(6));
640 default: return NAN;
641 }
642
643 case TE_CLOSURE0: case TE_CLOSURE1: case TE_CLOSURE2: case TE_CLOSURE3:
644 case TE_CLOSURE4: case TE_CLOSURE5: case TE_CLOSURE6: case TE_CLOSURE7:
645 switch(ARITY(n->type)) {
646 case 0: return TE_FUN(void*)(n->parameters[0]);
647 case 1: return TE_FUN(void*, double)(n->parameters[1], M(0));
648 case 2: return TE_FUN(void*, double, double)(n->parameters[2], M(0), M(1));
649 case 3: return TE_FUN(void*, double, double, double)(n->parameters[3], M(0), M(1), M(2));
650 case 4: return TE_FUN(void*, double, double, double, double)(n->parameters[4], M(0), M(1), M(2), M(3));
651 case 5: return TE_FUN(void*, double, double, double, double, double)(n->parameters[5], M(0), M(1), M(2), M(3), M(4));
652 case 6: return TE_FUN(void*, double, double, double, double, double, double)(n->parameters[6], M(0), M(1), M(2), M(3), M(4), M(5));
653 case 7: return TE_FUN(void*, double, double, double, double, double, double, double)(n->parameters[7], M(0), M(1), M(2), M(3), M(4), M(5), M(6));
654 default: return NAN;
655 }
656
657 default: return NAN;
658 }
659
660}
661
662#undef TE_FUN
663#undef M

Callers 4

optimizeFunction · 0.85
te_interpFunction · 0.85
EvaluateMethod · 0.85
CallFunctionMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected