Given f(x) = y, calculate its mathematical reverse f^-1(y) = x. More...
#include <expr_invert.h>
Public Member Functions | |
ExprInvert (std::string var) | |
Expr * | invert () |
bool | is_valid () |
bool | has_var (Expr *expr) |
virtual void | visit (Expr *expr) override |
virtual void | visit (VarExpr *expr) override |
virtual void | visit (ValExpr *expr) override |
virtual void | visit (AddExpr *expr) override |
virtual void | visit (SubExpr *expr) override |
virtual void | visit (MulExpr *expr) override |
virtual void | visit (DivExpr *expr) override |
virtual void | visit (ModExpr *expr) override |
virtual void | visit (ShlExpr *expr) override |
virtual void | visit (ShrExpr *expr) override |
virtual void | visit (SeqExpr *expr) override |
virtual void | visit (RngExpr *expr) override |
virtual void | visit (LogExpr *expr) override |
Given f(x) = y, calculate its mathematical reverse f^-1(y) = x.
The general approach is find which binary branch has variable and peel off the other branch until var is reached.