MCPcopy Create free account
hub / github.com/crownengine/crown / te_eval

Function te_eval

3rdparty/tinyexpr/tinyexpr.c:596–634  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

594
595
596double te_eval(const te_expr *n) {
597 if (!n) return NAN;
598
599 switch(TYPE_MASK(n->type)) {
600 case TE_CONSTANT: return n->value;
601 case TE_VARIABLE: return *n->bound;
602
603 case TE_FUNCTION0: case TE_FUNCTION1: case TE_FUNCTION2: case TE_FUNCTION3:
604 case TE_FUNCTION4: case TE_FUNCTION5: case TE_FUNCTION6: case TE_FUNCTION7:
605 switch(ARITY(n->type)) {
606 case 0: return TE_FUN(void)();
607 case 1: return TE_FUN(double)(M(0));
608 case 2: return TE_FUN(double, double)(M(0), M(1));
609 case 3: return TE_FUN(double, double, double)(M(0), M(1), M(2));
610 case 4: return TE_FUN(double, double, double, double)(M(0), M(1), M(2), M(3));
611 case 5: return TE_FUN(double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4));
612 case 6: return TE_FUN(double, double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4), M(5));
613 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));
614 default: return NAN;
615 }
616
617 case TE_CLOSURE0: case TE_CLOSURE1: case TE_CLOSURE2: case TE_CLOSURE3:
618 case TE_CLOSURE4: case TE_CLOSURE5: case TE_CLOSURE6: case TE_CLOSURE7:
619 switch(ARITY(n->type)) {
620 case 0: return TE_FUN(void*)(n->parameters[0]);
621 case 1: return TE_FUN(void*, double)(n->parameters[1], M(0));
622 case 2: return TE_FUN(void*, double, double)(n->parameters[2], M(0), M(1));
623 case 3: return TE_FUN(void*, double, double, double)(n->parameters[3], M(0), M(1), M(2));
624 case 4: return TE_FUN(void*, double, double, double, double)(n->parameters[4], M(0), M(1), M(2), M(3));
625 case 5: return TE_FUN(void*, double, double, double, double, double)(n->parameters[5], M(0), M(1), M(2), M(3), M(4));
626 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));
627 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));
628 default: return NAN;
629 }
630
631 default: return NAN;
632 }
633
634}
635
636#undef TE_FUN
637#undef M

Callers 2

optimizeFunction · 0.85
te_interpFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected