Expression sqrt(const Expression &x) { if (x.typeIs("double")) return funexpr("sqrt", x).set_type("double"); return x.cwisemethod("sqrt"); }
Expression sqr(const Expression &x) { if (x.typeIs("double")) return x*x; return x.cwisemethod("square"); }
Expression abs(const Expression &x) { if (x.typeIs("double")) return funexpr("fabs", x).set_type("double"); return x.cwisemethod("abs"); }