=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/parse.h,v retrieving revision 1.22 retrieving revision 1.59 diff -u -p -r1.22 -r1.59 --- OpenXM_contrib2/asir2000/parse/parse.h 2003/08/23 01:42:52 1.22 +++ OpenXM_contrib2/asir2000/parse/parse.h 2020/10/04 03:14:09 1.59 @@ -45,9 +45,9 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/parse.h,v 1.21 2003/08/21 08:05:02 saito Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/parse.h,v 1.58 2019/11/12 10:52:05 kondoh Exp $ */ -# if defined(VISUAL) +# if defined(VISUAL) || defined(__MINGW32__) #include #else #include @@ -59,25 +59,30 @@ #define ABS(a) ((a)>0?(a):-(a)) #endif +#include +#include + /* identifiers for expressions */ typedef enum { - I_BOP, I_COP, I_AND, I_OR, I_NOT, I_CE, - I_PRESELF, I_POSTSELF, - I_FUNC, I_FUNC_OPT, I_IFUNC, I_MAP, I_RECMAP, I_PFDERIV, - I_ANS, I_PVAR, I_ASSPVAR, - I_FORMULA, I_LIST, I_STR, I_NEWCOMP, I_CAR, I_CDR, I_CAST, - I_COM, I_PROC, I_INDEX, I_EV, I_TIMER, I_GF2NGEN, I_GFPNGEN, I_GFSNGEN, - I_LOP, I_OPT, I_GETOPT, I_POINT, I_QUOTE, I_PAREN, I_MINUS + I_BOP, I_COP, I_AND, I_OR, I_NOT, I_CE, + I_PRESELF, I_POSTSELF, + I_FUNC, I_FUNC_OPT, I_IFUNC, I_MAP, I_RECMAP, I_PFDERIV, + I_ANS, I_PVAR, I_ASSPVAR, + I_FORMULA, I_LIST, I_STR, I_NEWCOMP, I_CAR, I_CDR, I_CAST, + I_INDEX, I_EV, I_TIMER, I_GF2NGEN, I_GFPNGEN, I_GFSNGEN, + I_LOP, I_OPT, I_GETOPT, I_POINT, I_PAREN, I_MINUS, + I_NARYOP, I_CONS, I_FUNC_QARG, I_FUNC_HEAD, I_EVM } fid; /* identifiers for statements */ typedef enum { - S_BP, S_PFDEF, - S_SINGLE, S_CPLX, - S_IFELSE, S_FOR, S_DO, - S_BREAK, S_RETURN, S_CONTINUE + S_BP, S_PFDEF, + S_SINGLE, S_CPLX, + S_IFELSE, S_FOR, S_DO, + S_BREAK, S_RETURN, S_CONTINUE, + S_MODULE } sid; /* identifiers for comparison operators */ @@ -97,124 +102,140 @@ typedef enum { A_UNDEF, A_BIN, A_USR, A_PURE, A_PARI } typedef enum { V_IND, V_UC, V_PF, V_SR } vid; typedef struct oVS { - unsigned int n; - unsigned int asize; - unsigned int at; - unsigned int level; - struct oFUNC *usrf; - struct oPV *va; - NODE opt; + unsigned int n; + unsigned int asize; + unsigned int at; + unsigned int level; + struct oFUNC *usrf; + struct oPV *va; + NODE opt; } *VS; typedef struct oMODULE { - char *name; - VS pvs; - NODE usrf_list; + char *name; + VS pvs; + NODE usrf_list; } *MODULE; typedef struct oPV { - char *name; - short attr,type; - pointer priv; + char *name; + short attr,type; + pointer priv; } *PV; typedef struct oINFILE { - char *name; - FILE *fp; - int ln; - struct oINFILE *next; - char *tname; - int encoded; - short vol; + char *name; + FILE *fp; + JMP_BUF jmpbuf; + int ready_for_longjmp; + int ln; + struct oINFILE *next; + char *tname; + int encoded; + short vol; } *INFILE; struct oTKWD { - char *name; - int token; + char *name; + int token; }; +typedef struct fid_spec { + fid id; + farg_type type[10]; +} *fid_spec_p; + typedef struct oARF { - char *name; - void (*fp)(); + char *name; + void (*fp)(); } *ARF; typedef struct oFUNC { - char *name,*fullname; - int argc; - int type; - aid id; - union { - void (*binf)(); - struct oUSRF *usrf; - struct oPF *puref; - } f; + char *name,*fullname; + int argc; + int type; + int secure; + aid id; + unsigned int quote; + union { + void (*binf)(); + struct oUSRF *usrf; + struct oPF *puref; + } f; } *FUNC; typedef struct oUSRF { - char *fname; - MODULE module; - int startl,endl; - NODE args; - VS pvs; - char *desc; - struct oSNODE *body; + char *fname; + MODULE module; + int startl,endl; + NODE args; + VS pvs; + char *desc; + struct oSNODE *body; } *USRF; typedef struct oPF { - char *name; - int argc; - Obj body; - V *args; - Obj *deriv; - NODE ins; - int (*pari)(); - double (*libm)(); - int (*simplify)(); + char *name; + int argc; + Obj body; + V *args; + Obj *deriv; + NODE ins; + int (*pari)(); + double (*libm)(); + int (*simplify)(); +#if defined(INTERVAL) + void (**intervalfunc)(); +#endif } *PF; typedef struct oPFAD { - Obj arg; - int d; + Obj arg; + int d; } *PFAD; typedef struct oPFINS { - struct oPF *pf; - struct oPFAD ad[1]; + struct oPF *pf; + struct oPFAD ad[1]; } *PFINS; #define NEWPF(p) ((p)=(PF)MALLOC(sizeof(struct oPF))) typedef struct oFNODE { - fid id; - pointer arg[1]; + short id; + unsigned normalized:1; + unsigned expanded:2; + unsigned coef:1; + pointer arg[1]; } *FNODE; #define NEWFNODE(a,b) \ ((a)=(FNODE)MALLOC(sizeof(struct oFNODE)+sizeof(pointer)*(b-1))) typedef struct oSNODE { - sid id; - int ln; - pointer arg[1]; + sid id; + int ln; + pointer arg[1]; } *SNODE; #define NEWSNODE(a,b) \ ((a)=(SNODE)MALLOC(sizeof(struct oSNODE)+sizeof(pointer)*(b-1)),(a)->ln=asir_infile->ln) typedef struct oPVI { - int pv; - NODE index; + int pv; + NODE index; } *PVI; typedef struct oNODE2 { - pointer body1,body2; - struct oNODE2 *next; + pointer body1,body2; + struct oNODE2 *next; } *NODE2; struct ftab { - char *name; - void (*f)(); - int argc; + char *name; + void (*f)(); + int argc; + unsigned int quote; }; #define MKPVI(a,b,c)\ @@ -242,47 +263,55 @@ struct ftab { #define asir_assert(ptr,id,message)\ switch ( id ) {\ - case O_N: case O_P: case O_R:\ - if( (ptr) && (OID(ptr) > (id)) ) {\ - fprintf(stderr,message);\ - error(" : invalid argument");\ - }\ - break;\ - case O_DP:\ - if( (ptr) && (OID(ptr) != (id)) ) {\ - fprintf(stderr,message);\ - error(" : invalid argument");\ - }\ - break;\ - default:\ - if( !(ptr) || (OID(ptr) != (id)) ) {\ - fprintf(stderr,message);\ - error(" : invalid argument");\ - }\ - break;\ + case O_N: case O_P: case O_R:\ + if( (ptr) && (OID(ptr) > (id)) ) {\ + fprintf(stderr,message);\ + error(" : invalid argument");\ + }\ + break;\ + case O_DP:\ + if( (ptr) && (OID(ptr) != (id)) ) {\ + fprintf(stderr,message);\ + error(" : invalid argument");\ + }\ + break;\ + default:\ + if( !(ptr) || (OID(ptr) != (id)) ) {\ + fprintf(stderr,message);\ + error(" : invalid argument");\ + }\ + break;\ } #define DEFSIZE 32 #define PVGLOBAL(i) (((unsigned int)(i))|(1<<30)) -#define PVMGLOBAL(i) (((unsigned int)(i))|(3<<30)) +#define PVMGLOBAL(i) (((unsigned int)(i))|(2<<30)) +#define PVPATTERN(i) (((unsigned int)(i))|(3<<30)) #define PVATTR(i) (((unsigned int)(i))>>30) #define PVIND(i) (((unsigned int)(i))&0x3fffffff) #define GETPV(i,p) \ (PVATTR(i)==0?(int)((p)=CPVS->va[(unsigned int)(i)].priv)\ - :PVATTR(i)==1?(int)((p)=GPVS->va[PVIND(i)].priv)\ - :(int)((p)=MPVS->va[PVIND(i)].priv)) + :PVATTR(i)==1?(int)((p)=GPVS->va[PVIND(i)].priv)\ + :PVATTR(i)==2?(int)((p)=MPVS->va[PVIND(i)].priv)\ + :(int)((p)=PPVS->va[PVIND(i)].priv)) + #define GETPVREF(i,p) \ (PVATTR(i)==0?(int)((p)=&(CPVS->va[(unsigned int)(i)].priv))\ - :PVATTR(i)==1?(int)((p)=&(GPVS->va[PVIND(i)].priv))\ - :(int)((p)=&(MPVS->va[PVIND(i)].priv))) + :PVATTR(i)==1?(int)((p)=&(GPVS->va[PVIND(i)].priv))\ + :PVATTR(i)==2?(int)((p)=&(MPVS->va[PVIND(i)].priv))\ + :(int)((p)=&(PPVS->va[PVIND(i)].priv))) + #define GETPVNAME(i,p) \ (PVATTR(i)==0?(int)((p)=CPVS->va[(unsigned int)(i)].name)\ - :PVATTR(i)==1?(int)((p)=GPVS->va[PVIND(i)].name)\ - :(int)((p)=MPVS->va[PVIND(i)].name)) + :PVATTR(i)==1?(int)((p)=GPVS->va[PVIND(i)].name)\ + :PVATTR(i)==2?(int)((p)=MPVS->va[PVIND(i)].name)\ + :(int)((p)=PPVS->va[PVIND(i)].name)) + #define ASSPV(i,p) \ (PVATTR(i)==0?(int)(CPVS->va[(unsigned int)(i)].priv=(pointer)(p))\ - :PVATTR(i)==1?(int)(GPVS->va[PVIND(i)].priv=(pointer)(p))\ - :(int)(MPVS->va[PVIND(i)].priv=(pointer)(p))) + :PVATTR(i)==1?(int)(GPVS->va[PVIND(i)].priv=(pointer)(p))\ + :PVATTR(i)==2?(int)(MPVS->va[PVIND(i)].priv=(pointer)(p))\ + :(int)(PPVS->va[PVIND(i)].priv=(pointer)(p))) #define NEWNODE2(a) ((a)=(NODE2)MALLOC(sizeof(struct oNODE2))) #define MKNODE2(a,b,c,d) \ @@ -290,7 +319,7 @@ switch ( id ) {\ #define BDY1(a) ((a)->body1) #define BDY2(a) ((a)->body2) -extern VS GPVS,CPVS,EPVS,APVS,MPVS; +extern VS GPVS,CPVS,EPVS,APVS,MPVS,PPVS; extern MODULE CUR_MODULE; extern NODE MODULE_LIST; extern char *CUR_FUNC; @@ -299,6 +328,9 @@ extern INFILE asir_infile; extern NODE usrf,sysf,noargsysf,ubinf,parif,ONENODE; extern int nextbp,nextbplevel; extern int Verbose; +extern int do_quiet; +extern SYMBOL Symbol_grlex, Symbol_glex, Symbol_lex; +extern NODE current_option; #if defined(VISUAL_LIB) #include @@ -315,7 +347,7 @@ extern int Verbose; #define fflush w_fflush #endif -#if defined(__GNUC__) || defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__) +#if defined(__GNUC__) || defined(VISUAL) || defined(__MINGW32__) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__) NODE mknode(int,...); FNODE mkfnode(int,fid,...); SNODE mksnode(int,sid,...); @@ -334,6 +366,7 @@ void dp_ptozp_d(DP,DP *); void dp_vtod(Q *,DP,DP *); void dp_idivv_hist(Q,DP *); void dp_igcdv_hist(DP,Q *); +void dp_ptozp3(DP,Q *,DP *); void dp_ptozp2(DP,DP,DP *,DP *); void dp_ptozp(DP,DP *); void dp_nf_tab_mod(DP,LIST *,int,DP *); @@ -344,7 +377,16 @@ void dp_mbase(NODE,NODE *); void dp_dtov(DP,VECT *); void dp_cont(DP,Q *); void dp_idiv(DP,Q,DP *); - +void dtodpm(DP d,int pos,DPM *dp); +void dpm_nf_z(NODE b,DPM g,DPM *ps,int full,int multiple,DPM *rp); +void dpm_nf_f(NODE b,DPM g,DPM *ps,int full,DPM *rp); +void weyl_actd(VL vl,DP p1,DP p2,DP *pr); +void dpm_sp(DPM p1,DPM p2,DPM *rp); +void initdpm(struct order_spec *spec,int type); +void dpm_ht(DPM p,DPM *rp); +void dpm_hm(DPM p,DPM *rp); +int dpm_redble(DPM p1,DPM p2); +void lumtop_unsigned(V v,int mod,int bound,LUM f,P *g); int dp_nt(DP); void dp_dehomo(DP,DP *); void dp_homo(DP,DP *); @@ -369,38 +411,11 @@ void dp_mod(DP,int,NODE,DP *); void dp_prim_mod(DP,int,DP *); void dp_prim(DP,DP *); void heu_nezgcdnpz(VL,P *,int,P *); -void homogenize_order(struct order_spec *,int,struct order_spec *); -int create_order_spec(Obj,struct order_spec *); +void homogenize_order(struct order_spec *,int,struct order_spec **); +int create_order_spec(VL,Obj,struct order_spec **); int dl_equal(int,DL,DL); void qltozl(Q *,int,Q *); -int cmpdl_matrix(int,DL,DL); -int cmpdl_order_pair(int,DL,DL); -int cmpdl_elim(int,DL,DL); -int cmpdl_blexrev(int,DL,DL); -int cmpdl_bgradrev(int,DL,DL); -int cmpdl_brevrev(int,DL,DL); -int cmpdl_brevgradlex(int,DL,DL); -int cmpdl_bgradlex(int,DL,DL); -int cmpdl_blex(int,DL,DL); -int cmpdl_revgradlex(int,DL,DL); -int cmpdl_gradlex(int,DL,DL); -int cmpdl_revlex(int,DL,DL); -int cmpdl_lex(int,DL,DL); -int compd(VL,DP,DP); -void adddl(int,DL,DL,DL *); -void divsdc(VL,DP,P,DP *); -void muldc(VL,DP,P,DP *); -void muldm(VL,DP,MP,DP *); -void muld(VL,DP,DP,DP *); -void chsgnd(DP,DP *); -void subd(VL,DP,DP,DP *); -void addd(VL,DP,DP,DP *); -int sugard(MP); -void nodetod(NODE,DP *); -void dtop(VL,VL,DP,P *); -void ptod(VL,VL,P,DP *); -void initd(struct order_spec *); int mainparse(SNODE *); int exprparse(FUNC,char *,FNODE *); @@ -440,7 +455,6 @@ void tty_reset(void); void set_timer(int); void reset_timer(void); void int_handler(int); -void int_handler(int); void segv_handler(int); void bus_handler(int); void fpe_handler(int); @@ -459,7 +473,7 @@ int yyparse(void); void nodetod(NODE,DP *); void poppvs(void); int length(NODE); -int get_heapsize(void); +size_t get_heapsize(void); int searchpvar(char *); void mkparif(char *,FUNC *); void makevar(char *,P *); @@ -471,8 +485,8 @@ void closecurrentinput(void); void asir_terminate(int); void searchasirpath(char *,char **); void get_vars(Obj,VL *); -void appendbinf(NODE *,char *,void(*)(),int); -void appendubinf(char *,void(*)(),int); +void appendbinf(NODE *,char *,void(*)(),int,unsigned int); +void appendubinf(char *,void(*)(),int,unsigned int); void parif_init(void); void sysf_init(void); void makesrvar(FUNC, P *); @@ -488,10 +502,8 @@ void printv(VL,V); void sprintv(VL,V); int arf_comp(VL, Obj, Obj); int complist(VL, LIST, LIST); -int complist(VL, LIST, LIST); int getcompsize(int); int getpvar(VS,char *,int); -int getpvar(VS,char *,int); int gettype(unsigned int); int indextotype(int,int); int loadfile(char *); @@ -502,15 +514,6 @@ int qcoefp(Obj); int qcoefr(Obj); int rangecheck(Obj,int); int structtoindex(char *); -pointer eval(FNODE); -pointer evalf(FUNC,FNODE,FNODE); -pointer bevalf(FUNC,NODE); -pointer evalif(FNODE,FNODE); -pointer evalnode(NODE node); -pointer evalpf(PF,NODE); -pointer evalparif(FUNC,NODE); -pointer evalpv(int,FNODE,pointer); -pointer evalstat(SNODE f); void _mkpfins(PF ,Obj *,V *); void appendpfins(V ,V *); void appenduf(char *,FUNC *); @@ -542,7 +545,11 @@ void getmemberp(FNODE,Obj **); void help(char *); void instov(PFINS ,V *); Obj memberofstruct(COMP,char *); -void mkpf(char *,Obj ,int ,V *,int (*)(),double (*)(),int (*)(),PF *); +#if defined(INTERVAL) +void mkpf(char *,Obj ,int ,V *,int (*)(),double (*)(),int (*)(),void (*[])(), PF *); +#else +void mkpf(char *,Obj ,int ,V *,int (*)(),double (*)(),int (*)(), PF *); +#endif void mkpfins(PF ,V *,V *); void mkuf(char *,char *,NODE,SNODE,int,int,char *,MODULE); void newstruct(int,struct oCOMP **); @@ -600,12 +607,10 @@ int dp_redble(DP p1,DP p2); void sortbynm(Q *w,int n); int comp_nm(Q *a,Q *b); void qltozl(Q *w,int n,Q *dvr); -void homogenize_order(struct order_spec *old,int n,struct order_spec *new); void dp_rat(DP p,DP *rp); void dp_mod(DP p,int mod,NODE subst,DP *rp); void dp_dehomo(DP p,DP *rp); void dp_homo(DP p,DP *rp); -int create_order_spec(Obj obj,struct order_spec *spec); void dp_nf_tab_mod(DP p,LIST *tab,int mod,DP *rp); void dp_lnf_mod(DP p1,DP p2,NODE g,int mod,DP *r1p,DP *r2p); void dp_lnf_f(DP p1,DP p2,NODE g,DP *r1p,DP *r2p); @@ -638,7 +643,6 @@ void dp_mbase(NODE hlist,NODE *mbase); void dp_idiv(DP p,Q c,DP *rp); void dp_ptozp2(DP p0,DP p1,DP *hp,DP *rp); void dp_ptozp(DP p,DP *rp); -int eqdl(int nv,DL dl1,DL dl2); void _dpmod_to_vect(DP f,DL *at,int *b); void _tf_to_vect_compress(NODE tf,DL *at,CDP *b); void dp_to_vect(DP f,DL *at,Q *b); @@ -739,21 +743,21 @@ void reduce_reducers_mod(int **mat,int row,int col,int void pre_reduce_mod(int **mat,int row,int col,int nred,int md); void reduce_sp_by_red_mod(int *sp,int **redmat,int *ind,int nred,int col,int md); void red_by_compress(int m,unsigned int *p,unsigned int *r, - unsigned int *ri,unsigned int hc,int len); + unsigned int *ri,unsigned int hc,int len); void red_by_vect(int m,unsigned int *p,unsigned int *r,unsigned int hc,int len); void reduce_sp_by_red_mod_compress (int *sp,CDP *redmat,int *ind, - int nred,int col,int md); + int nred,int col,int md); int generic_gauss_elim_mod(int **mat0,int row,int col,int md,int *colstat); int lu_gfmmat(GFMMAT mat,unsigned int md,int *perm); int find_lhs_and_lu_mod(unsigned int **a,int row,int col, - unsigned int md,int **rinfo,int **cinfo); -void solve_by_lu_mod(int **a,int n,int md,int **b,int l); + unsigned int md,int **rinfo,int **cinfo); +void solve_by_lu_mod(int **a,int n,int md,int **b,int l,int normalize); int gauss_elim_mod1(int **mat,int row,int col,int md); int gauss_elim_geninv_mod(unsigned int **mat,int row,int col,int md); void solve_by_lu_gfmmat(GFMMAT lu,unsigned int md,unsigned int *b,unsigned int *x); void mat_to_gfmmat(MAT m,unsigned int md,GFMMAT *rp); int gauss_elim_geninv_mod_swap(unsigned int **mat,int row,int col, - unsigned int md,unsigned int ***invmatp,int **indexp); + unsigned int md,unsigned int ***invmatp,int **indexp); void inner_product_int(Q *a,Q *b,int n,Q *r); void inner_product_mat_int_mod(Q **a,int **b,int n,int k,int l,Q *r); int generate_ONB_polynomial(UP2 *rp,int m,int type); @@ -792,8 +796,8 @@ void chsgnquote(QUOTE a,QUOTE *c); void objtoquote(Obj a,QUOTE *c); void polytoquote(P a,QUOTE *c); void dptoquote(DP a,QUOTE *c); -void dctoquote(DCP dc,QUOTE v,QUOTE *c); -void mptoquote(MP m,int n,QUOTE *c); +void dctoquote(DCP dc,QUOTE v,QUOTE *c,int *sgn); +void mptoquote(MP m,int n,QUOTE *c,int *sgn); void vartoquote(V v,QUOTE *c); void fnodetotree(FNODE f,LIST *rp); FNODE eval_pvar_in_fnode(FNODE f); @@ -810,7 +814,6 @@ void prompt() ; void sprompt(char *ptr); void process_args(int ac,char **av); void sig_init() ; -static void (*old_int)(int);; void asir_save_handler() ; void asir_set_handler() ; void asir_reset_handler() ; @@ -836,8 +839,13 @@ void show_debug_window(int on); void init_cmdwin(); void searchpf(char *name,FUNC *fp); void searchc(char *name,FUNC *fp); +#if defined(INTERVAL) void mkpf(char *name,Obj body,int argc,V *args, - int (*parif)(),double (*libmf)(), int (*simp)(),PF *pfp); + int (*parif)(),double (*libmf)(), int (*simp)(), void (*intervalfunc[])(), PF *pfp); +#else +void mkpf(char *name,Obj body,int argc,V *args, + int (*parif)(),double (*libmf)(), int (*simp)(), PF *pfp); +#endif void mkpfins(PF pf,V *args,V *vp); void _mkpfins(PF pf,Obj *args,V *vp); void _mkpfins_with_darray(PF pf,Obj *args,int *darray,V *vp); @@ -873,12 +881,15 @@ pointer eval(FNODE f); pointer evalstat(SNODE f); pointer evalnode(NODE node); pointer evalf(FUNC f,FNODE a,FNODE opt); +pointer evalparif(FUNC f,NODE a); +pointer evalf_deriv(FUNC f,FNODE a,FNODE deriv); pointer evalmapf(FUNC f,FNODE a); pointer eval_rec_mapf(FUNC f,FNODE a); pointer beval_rec_mapf(FUNC f,NODE node); pointer bevalf(FUNC f,NODE a); -pointer evalif(FNODE f,FNODE a); -pointer evalpf(PF pf,NODE args); +pointer bevalf_with_opts(FUNC f,NODE a,NODE opts); +pointer evalif(FNODE f,FNODE a,FNODE opt); +pointer evalpf(PF pf,NODE args,NODE deriv); void evalnodebody(NODE sn,NODE *dnp); void gen_searchf(char *name,FUNC *r); void searchf(NODE fn,char *name,FUNC *r); @@ -886,11 +897,11 @@ void appenduf(char *name,FUNC *r); void mkparif(char *name,FUNC *r); void mkuf(char *name,char *fname,NODE args,SNODE body,int startl,int endl,char *desc,MODULE module); Obj getopt_from_cpvs(char *key); -void des_enc(unsigned long *, unsigned char *, unsigned long *); -unsigned long round_func(unsigned long , unsigned char *); -unsigned long s_box_func(unsigned char *); -void des_dec(unsigned long *, unsigned char *, unsigned long *); -void key_schedule(unsigned char *,unsigned char *); +void des_enc(unsigned long *, unsigned char *, unsigned long *); +unsigned long round_func(unsigned long , unsigned char *); +unsigned long s_box_func(unsigned char *); +void des_dec(unsigned long *, unsigned char *, unsigned long *); +void key_schedule(unsigned char *,unsigned char *); void debug_init(); void add_alias(char *com,char *alias); void show_alias(char *alias); @@ -915,3 +926,57 @@ int estimate_length(VL vl,pointer p); void send_progress(short per,char *msg); void set_error(int code,char *reason,char *action); double get_current_time(); +int get_opt(char *key0,Obj *r); + +#if defined(VISUAL) || defined(__MINGW32__) +void ox_plot_main(); +#else +void ox_plot_main(int argc,char **argv); +#endif +void launch_main(int argc,char **argv); +void ox_main(int argc,char **argv); + +void get_fid_spec(fid id,fid_spec_p *spec); +FNODE strip_paren(FNODE f); +NODE flatten_fnodenode(NODE n,char *opname); +FNODE flatten_fnode(FNODE f,char *opname); +int compquote(VL vl,QUOTE q1,QUOTE q2); +int compqa(VL vl,QUOTEARG q1,QUOTEARG q2); +int compfnode(FNODE f1,FNODE f2); +void shuffle_mulnbp(VL vl,NBP p1,NBP p2, NBP *rp); +void harmonic_mulnbp(VL vl,NBP p1,NBP p2, NBP *rp); +void mulnbmnbp(VL vl,NBM m,NBP p, NBP *rp); +void mulnbpnbm(VL vl,NBP p,NBM m, NBP *rp); +P separate_nbm(NBM a,NBP *a0,NBP *ah,NBP *ar); +P separate_tail_nbm(NBM a,NBP *a0,NBP *ar,NBP *at); +P separate_xky_nbm(NBM a,NBP *a0,NBP *ah,NBP *ar); + +int fnode_is_var(FNODE f); +int fnode_is_coef(FNODE f); +int fnode_is_number(FNODE f); +int fnode_is_rational(FNODE f); +int fnode_is_integer(FNODE f); +int fnode_is_nonnegative_integer(FNODE f); +int fnode_is_one(FNODE f); +int fnode_is_minusone(FNODE f); +int fnode_is_dependent(FNODE f,V v); + +int nfnode_comp(FNODE f1,FNODE f2); +int nfnode_comp_lex(FNODE f1,FNODE f2); +int nfnode_match(FNODE f,FNODE pat,NODE *rp); +int nfnode_match_naryadd(FNODE f,FNODE p,NODE *rp); +int nfnode_match_narymul(FNODE f,FNODE p,NODE *rp); + +int exprparse_create_var(FUNC f,char *str,SNODE *statp); +int obj_is_dependent(Obj a,V v); +void instoobj(PFINS ins,Obj *rp); +void goto_toplevel(char *s); +void add_bucket(GeoBucket g,NODE d,int nv); +void gen_searchf_searchonly(char *name,FUNC *r,int global); +void update_LASTCO(); +void order_init(); +void GC_init(void); +void showpos_to_list(LIST *r); +void mp_abs(NODE arg,Num *rp); +void print_crossref(FUNC f); +void ox_usr1_handler(int sig);