+// Tables for initializing the "fcns" map and the function help topics
+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)},
+ {"collect_distributed", fcn_desc(f_collect_distributed, 2)},
+ {"content", fcn_desc(f_content, 2)},
+ {"decomp_rational", fcn_desc(f_decomp_rational, 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)},
+ {"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)},
+ {"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)},
+ {"map", fcn_desc(f_map, 2)},
+ {"match", fcn_desc(f_match, 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)},
+ {"numer_denom", fcn_desc(f_numer_denom, 1)},
+ {"op", fcn_desc(f_op, 2)},
+ {"pow", fcn_desc(f_pow, 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_series, 3)},
+ {"sqrfree", fcn_desc(f_sqrfree1, 1)},
+ {"sqrfree", fcn_desc(f_sqrfree2, 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
+};
+
+struct fcn_help_init {
+ const char *name;
+ const char *help;
+};
+
+static const fcn_help_init builtin_help[] = {
+ {"acos", "inverse cosine function"},
+ {"acosh", "inverse hyperbolic cosine function"},
+ {"asin", "inverse sine function"},
+ {"asinh", "inverse hyperbolic sine function"},
+ {"atan", "inverse tangent function"},
+ {"atan2", "inverse tangent function with two arguments"},
+ {"atanh", "inverse hyperbolic tangent function"},
+ {"beta", "Beta function"},
+ {"binomial", "binomial function"},
+ {"cos", "cosine function"},
+ {"cosh", "hyperbolic cosine function"},
+ {"exp", "exponential function"},
+ {"factorial", "factorial function"},
+ {"lgamma", "natural logarithm of Gamma function"},
+ {"tgamma", "Gamma function"},
+ {"log", "natural logarithm"},
+ {"psi", "psi function\npsi(x) is the digamma function, psi(n,x) the nth polygamma function"},
+ {"sin", "sine function"},
+ {"sinh", "hyperbolic sine function"},
+ {"tan", "tangent function"},
+ {"tanh", "hyperbolic tangent function"},
+ {"zeta", "zeta function\nzeta(x) is Riemann's zeta function, zeta(n,x) its nth derivative"},
+ {"Li2", "dilogarithm"},
+ {"Li3", "trilogarithm"},
+ {"Order", "order term function (for truncated power series)"},
+ {"Derivative", "inert differential operator"},
+ {NULL, NULL} // End marker
+};
+
+#include "ginsh_extensions.h"
+