MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / te_eval

Function te_eval

extern/tinyexpr/tinyexpr.c:520–558  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

518
519
520double te_eval(const te_expr *n) {
521 if (!n) return NAN;
522
523 switch(TYPE_MASK(n->type)) {
524 case TE_CONSTANT: return n->value;
525 case TE_VARIABLE: return *n->bound;
526
527 case TE_FUNCTION0: case TE_FUNCTION1: case TE_FUNCTION2: case TE_FUNCTION3:
528 case TE_FUNCTION4: case TE_FUNCTION5: case TE_FUNCTION6: case TE_FUNCTION7:
529 switch(ARITY(n->type)) {
530 case 0: return TE_FUN(void)();
531 case 1: return TE_FUN(double)(M(0));
532 case 2: return TE_FUN(double, double)(M(0), M(1));
533 case 3: return TE_FUN(double, double, double)(M(0), M(1), M(2));
534 case 4: return TE_FUN(double, double, double, double)(M(0), M(1), M(2), M(3));
535 case 5: return TE_FUN(double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4));
536 case 6: return TE_FUN(double, double, double, double, double, double)(M(0), M(1), M(2), M(3), M(4), M(5));
537 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));
538 default: return NAN;
539 }
540
541 case TE_CLOSURE0: case TE_CLOSURE1: case TE_CLOSURE2: case TE_CLOSURE3:
542 case TE_CLOSURE4: case TE_CLOSURE5: case TE_CLOSURE6: case TE_CLOSURE7:
543 switch(ARITY(n->type)) {
544 case 0: return TE_FUN(void*)(n->parameters[0]);
545 case 1: return TE_FUN(void*, double)(n->parameters[1], M(0));
546 case 2: return TE_FUN(void*, double, double)(n->parameters[2], M(0), M(1));
547 case 3: return TE_FUN(void*, double, double, double)(n->parameters[3], M(0), M(1), M(2));
548 case 4: return TE_FUN(void*, double, double, double, double)(n->parameters[4], M(0), M(1), M(2), M(3));
549 case 5: return TE_FUN(void*, double, double, double, double, double)(n->parameters[5], M(0), M(1), M(2), M(3), M(4));
550 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));
551 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));
552 default: return NAN;
553 }
554
555 default: return NAN;
556 }
557
558}
559
560#undef TE_FUN
561#undef M

Callers 3

optimizeFunction · 0.85
te_interpFunction · 0.85
stepMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected