return e[0].evalf(ex_to<numeric>(e[1]).to_int());
}
+static ex f_find(const exprseq &e)
+{
+ lst found;
+ e[0].find(e[1], found);
+ return found;
+}
+
static ex f_inverse(const exprseq &e)
{
CHECK_ARG(0, matrix, inverse);
return (bool)ex_to<relational>(e[0]) ? ex(1) : ex(0);
}
+class apply_map_function : public map_function {
+ ex apply;
+public:
+ apply_map_function(const ex & a) : apply(a) {}
+ ex operator()(const ex & e) { return apply.subs(wild() == e, true); }
+};
+
+static ex f_map(const exprseq &e)
+{
+ apply_map_function fcn(e[1]);
+ return e[0].map(fcn);
+}
+
static ex f_match(const exprseq &e)
{
lst repl_lst;
{"evalf", fcn_desc(f_evalf2, 2)},
{"evalm", fcn_desc(f_evalm, 1)},
{"expand", fcn_desc(f_expand, 1)},
+ {"find", fcn_desc(f_find, 2)},
{"gcd", fcn_desc(f_gcd, 2)},
{"has", fcn_desc(f_has, 2)},
{"inverse", fcn_desc(f_inverse, 1)},
{"lcoeff", fcn_desc(f_lcoeff, 2)},
{"ldegree", fcn_desc(f_ldegree, 2)},
{"lsolve", fcn_desc(f_lsolve, 2)},
+ {"map", fcn_desc(f_map, 2)},
{"match", fcn_desc(f_match, 2)},
{"nops", fcn_desc(f_nops, 1)},
{"normal", fcn_desc(f_normal1, 1)},