+// Table for initializing the "fcns" map
+struct fcn_init {
+ const char *name;
+ const fcn_desc desc;
+};
+
+static const fcn_init builtin_fcns[] = {
+ {"charpoly", fcn_desc(f_charpoly, 2)},
+ {"coeff", fcn_desc(f_coeff, 3)},
+ {"collect", fcn_desc(f_collect, 2)},
+ {"content", fcn_desc(f_content, 2)},
+ {"degree", fcn_desc(f_degree, 2)},
+ {"denom", fcn_desc(f_denom, 1)},
+ {"determinant", fcn_desc(f_determinant, 1)},
+ {"diag", fcn_desc(f_diag, 0)},
+ {"diff", fcn_desc(f_diff2, 2)},
+ {"diff", fcn_desc(f_diff3, 3)},
+ {"divide", fcn_desc(f_divide, 2)},
+ {"eval", fcn_desc(f_eval1, 1)},
+ {"eval", fcn_desc(f_eval2, 2)},
+ {"evalf", fcn_desc(f_evalf1, 1)},
+ {"evalf", fcn_desc(f_evalf2, 2)},
+ {"expand", fcn_desc(f_expand, 1)},
+ {"gcd", fcn_desc(f_gcd, 2)},
+ {"has", fcn_desc(f_has, 2)},
+ {"inverse", fcn_desc(f_inverse, 1)},
+ {"is", fcn_desc(f_is, 1)},
+ {"lcm", fcn_desc(f_lcm, 2)},
+ {"lcoeff", fcn_desc(f_lcoeff, 2)},
+ {"ldegree", fcn_desc(f_ldegree, 2)},
+ {"lsolve", fcn_desc(f_lsolve, 2)},
+ {"nops", fcn_desc(f_nops, 1)},
+ {"normal", fcn_desc(f_normal1, 1)},
+ {"normal", fcn_desc(f_normal2, 2)},
+ {"numer", fcn_desc(f_numer, 1)},
+ {"op", fcn_desc(f_op, 2)},
+ {"power", fcn_desc(f_power, 2)},
+ {"prem", fcn_desc(f_prem, 3)},
+ {"primpart", fcn_desc(f_primpart, 2)},
+ {"quo", fcn_desc(f_quo, 3)},
+ {"rem", fcn_desc(f_rem, 3)},
+ {"series", fcn_desc(f_series2, 2)},
+ {"series", fcn_desc(f_series3, 3)},
+ {"series", fcn_desc(f_series4, 4)},
+ {"sqrfree", fcn_desc(f_sqrfree, 2)},
+ {"sqrt", fcn_desc(f_sqrt, 1)},
+ {"subs", fcn_desc(f_subs2, 2)},
+ {"subs", fcn_desc(f_subs3, 3)},
+ {"tcoeff", fcn_desc(f_tcoeff, 2)},
+ {"time", fcn_desc(f_dummy, 0)},
+ {"trace", fcn_desc(f_trace, 1)},
+ {"transpose", fcn_desc(f_transpose, 1)},
+ {"unassign", fcn_desc(f_unassign, 1)},
+ {"unit", fcn_desc(f_unit, 2)},
+ {NULL, fcn_desc(f_dummy, 0)} // End marker
+};
+