=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/parse.h,v retrieving revision 1.57 retrieving revision 1.59 diff -u -p -r1.57 -r1.59 --- OpenXM_contrib2/asir2000/parse/parse.h 2018/03/29 01:32:54 1.57 +++ OpenXM_contrib2/asir2000/parse/parse.h 2020/10/04 03:14:09 1.59 @@ -45,7 +45,7 @@ * 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.56 2017/08/31 02:36:21 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/parse.h,v 1.58 2019/11/12 10:52:05 kondoh Exp $ */ # if defined(VISUAL) || defined(__MINGW32__) #include @@ -59,6 +59,9 @@ #define ABS(a) ((a)>0?(a):-(a)) #endif +#include +#include + /* identifiers for expressions */ typedef enum { @@ -181,6 +184,9 @@ typedef struct oPF { int (*pari)(); double (*libm)(); int (*simplify)(); +#if defined(INTERVAL) + void (**intervalfunc)(); +#endif } *PF; typedef struct oPFAD { @@ -371,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 *); @@ -530,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 **); @@ -820,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); @@ -902,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);