int mapping_toggle=TRUE; /* this is a map? TRUE or FALSE */ int inverse_toggle=EXPLICIT_INV; /* if so, is inverse FALSE, APPROX_INV, */ /* or EXPLICIT_INV? FALSE for vec field */ /* In this section, input NULL or the name of the function which contains... */ int (*def_name)()=bball; /* the eqns of motion */ int (*jac_name)()=bball_jac; /* the jacobian (deriv w.r.t. space) */ int (*aux_func_name)()=bball_aux; /* the auxiliary functions */ int (*inv_name)()=bball_inv; /* the inverse or approx inverse */ int (*dfdt_name)()=NULL; /* the deriv w.r.t time */ int (*dfdparam_name)()=NULL; /* the derivs w.r.t. parameters */The first line means that our system is a mapping; if it were a vector field, we would set mapping_toggle to FALSE. The second line means that we have an explicit inverse for our system. In the event that a mapping does not have an explicit inverse, then Newton's method will be used to calculate inverse iterates. In this event, we need to tell DsTool if there exists an approximate inverse (see Section
In the last section of code, we provide DsTool with the names of any functions we defined previously. For our example, this means filling in the names of the functions which compute the equations of motion, the Jacobian, auxiliary functions, and the inverse. If any of these functions were omitted, then the user should enter NULL instead of a name. For example, the function which defines the inverse will be NULL if you are installing a vector field, and the function which defines the derivative with respect to time should always be NULL for mappings.
At this point, the user should save and exit the file bball_def.c.