=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/parse.h,v retrieving revision 1.45 retrieving revision 1.58 diff -u -p -r1.45 -r1.58 --- OpenXM_contrib2/asir2000/parse/parse.h 2006/02/08 02:11:19 1.45 +++ OpenXM_contrib2/asir2000/parse/parse.h 2019/11/12 10:52:05 1.58 @@ -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.44 2005/12/10 14:14:16 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/parse.h,v 1.57 2018/03/29 01:32:54 noro Exp $ */ -# if defined(VISUAL) +# if defined(VISUAL) || defined(__MINGW32__) #include #else #include @@ -62,24 +62,24 @@ /* 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_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_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_MODULE + 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 */ @@ -99,137 +99,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; - jmp_buf jmpbuf; - int ready_for_longjmp; - 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 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; - int secure; - aid id; - unsigned int quote; - 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 { - short id; - unsigned normalized:1; - unsigned expanded:1; - unsigned coef:1; - 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; - unsigned int quote; + char *name; + void (*f)(); + int argc; + unsigned int quote; }; #define MKPVI(a,b,c)\ @@ -257,24 +260,24 @@ 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 @@ -341,7 +344,7 @@ extern NODE current_option; #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,...); @@ -401,33 +404,6 @@ 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 *); @@ -467,7 +443,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); @@ -486,7 +461,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 *); @@ -515,10 +490,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 *); @@ -560,7 +533,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 **); @@ -654,7 +631,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); @@ -755,21 +731,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); + 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); @@ -826,7 +802,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() ; @@ -852,8 +827,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); @@ -895,7 +875,8 @@ 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 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); @@ -904,11 +885,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);