Sindbad~EG File Manager
/* M. Beeson, for Mathpert.
Module 'automode' consists of:
postops,preops,cflags,autosimp,autotrig,autosum
autocalc,autoeqn,autoeqns,autoineq,
Public interface to the module:
*/
MEXPORT_AUTOMODE int opcommand(int,int);
MEXPORT_AUTOMODE void set_control_flags(int,int); /* cflags.c */
MEXPORT_AUTOMODE int one_step(PDOCDATA, term *, unsigned char *, operation *);
MEXPORT_AUTOMODE int in_loop(term,operation);
MEXPORT_AUTOMODE int contains_constofint(term t);
MEXPORT_AUTOMODE void unpack_flags(int);
MEXPORT_AUTOMODE void pack_flags(int);
MEXPORT_AUTOMODE int get_activeline(void);
MEXPORT_AUTOMODE int get_indenomflag(void);
MEXPORT_AUTOMODE int get_intflag(void);
MEXPORT_AUTOMODE int get_innumflag(void);
MEXPORT_AUTOMODE int contains_bound_vars(term t);
MEXPORT_AUTOMODE int get_difflag(void);
MEXPORT_AUTOMODE int trigfunctor(unsigned short);
MEXPORT_AUTOMODE int contextsensitive(actualop);
MEXPORT_AUTOMODE int stop_apart(term t);
MEXPORT_AUTOMODE int numerical_sum(term t);
/* Functions private to the module: */
void select_trigeval_op(int flag, term t, actualop *o, int *nops);
int block_squareeqn2(term t);
void set_trigflag(term, unsigned short *);
void set_hypertrigflag(term, unsigned short *);
void pre_ops(term, actualop *, int *);
void pre_product(term, actualop *, int *);
void post_ops(term t, term *arg, actualop *o, int *nops);
void autosum(term, actualop *, int *);
void autoproduct(term, actualop *, int *);
void autotrig(term t,actualop *o, int *nops);
#define TRIGFUNCTOR2(f) (ACOS <= (f) && (f) <= COT) /* used in automode.c */
#define TRIGINDEX(f) ((f) - ACOS)
#define TRIGCONTAINS(flag,f) ((1 << TRIGINDEX(f)) & (flag))
#define ARCTRIGSPRESENT(flag) ((flag) & 0x003f) /* check rightmost 6 bits */
#define FACTORFLAG (((factorflag & 1) && innumflag) || ((factorflag & 0x10) && indenomflag) || (factorflag & 0x100))
#define DISTRIB ((!SOLVETYPE(problemtype) && !limitflag && ((indenomflag && (expandflag & 0x10)) || ( innumflag && (expandflag & 1)) || (!innumflag && !indenomflag && (expandflag & 0x100)) || (intflag && !indenomflag)) && !comdenomflag) || (SOLVETYPE(problemtype) && !FACTORFLAG))
/* used to include this in DISTRIB: || (problemtype > LIMITS && !indenomflag)
but took it out to prevent using distriblaw after differentiating
(x^3-2x+1)^111 ; used to have difflag where expandflag is, but
we don't want to distribute before differentiating (6t^2 +5)^3(t^3-7)^4 */
#define EXPANDFLAG (expandflag & 0x0100 || ((expandflag & 0x0001) && innumflag) || ((expandflag & 0x0010) && indenomflag))
MEXPORT_AUTOMODE void solve_linear_equations(term, term *, int, actualop *, int *); /* autoeqns.c */
MEXPORT_AUTOMODE void solve_by_substitution(term, term *, int, actualop *, int *); /* autoeqns.c */
MEXPORT_AUTOMODE void solve_matrix_equation(term, term *, int, actualop *, int *); /* autoeqn.c */
MEXPORT_AUTOMODE void solve_equation(term, int, actualop *, int *); /* autoeqn.c */
MEXPORT_AUTOMODE void pre_equation(term, actualop *, int *);
MEXPORT_AUTOMODE void pre_ineq(term, actualop *, int *);
MEXPORT_AUTOMODE void solve_ineq(term, int, actualop *, int *); /* autoineq.c */
/* The following 'flags' are defined in automode.c
and used only in files automode.c and postops.c */
extern int innumflag;
extern int indenomflag;
extern int inlogflag;
extern int limitflag;
extern int difflag;
extern int limfractflag;
extern int insqrtflag;
extern int inrootflag;
extern int infractexpflag;
extern int inpowerflag;
extern int summandflag;
int attractible(term, term);
void autotrig(term t,actualop *o, int *nops); /* autotrig.c */
void autosum(term t,actualop *o, int *nops); /* autosum.c */
void autoproduct(term t,actualop *o, int *nops); /* autosum.c */
int suppress_factoring(int,int); /* preops.c */
int sqrtexp_conditions(term); /* postops, also called in preops */
int intsub_in_preops(term, term); /* preops, also called in autocalc */
void determine_trigexpandflag(term); /* autosimp, called also in ssolve */
void set_checked(void); /* autosimp, called also in exec */
void set_prime(term);
unsigned nbits(unsigned short);
int get_hint(operation *);
int use_logdif(term,term); /* autocalc.c */
int ftrig(term,term);
int possible_trigsub(term,term);
int is_sincos(term,term); /* autocalc.c */
MEXPORT_AUTOMODE int get_intflag(void);
MEXPORT_AUTOMODE int get_indexsumflag(void);
MEXPORT_AUTOMODE int get_seriesflag(void);
int pulloutrational_aux(term num, term denom);
int sqrtcomdenom(term); /* preops */
int hypertrigindex(unsigned short f);
int hyperindicates(unsigned short flag, unsigned short f);
int contains_hypertrig(term t);
void set_hflag(int);
int get_hflag(void);
int contains_double(term t);
#define INDICATES(trigflag,f) ((trigflag) & (1 << TRIGINDEX(f)))
MEXPORT_ALGEBRA actualop factorops(int); /* factor.c */
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists