-
-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
Hi Emanuel-
Looking at how to handle conditionals, as not everything maps to linear functions. I'd really like a fn (a,b,c) which returns b if a else c, or functionality equivalent to a ? b : c
I don't see anything supporting that in the framework. Lunchtime hacking turned up the below.
If this approach is good, it may be worth including in examples. If not, what is the recommended approach, and is a ternary operator a reasonable feature request?
Thanks!
Duncan
context.RegisterLogical("<=", (a, b) => a <= b, Precedence.Addition);
context.RegisterLogical(">", (a, b) => a > b, Precedence.Addition);
context.RegisterBinary("if",(a,b) => (b != 0) ? a : 0, Precedence.Addition);
MathExpr expr = new MathExpr("({x} if {x} <= 0.5) + (({x} - 0.5) if ({x} > 0.5))", context);
var fn = expr.Compile("x");
Debug.Assert(IsNear(fn(0.0), 0));
Debug.Assert(IsNear(fn(0.75), 0.25));
Metadata
Metadata
Assignees
Labels
No labels