Annotation of OpenXM_contrib2/asir2018/parse/parse.h, Revision 1.1
1.1 ! noro 1: /*
! 2: * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED
! 3: * All rights reserved.
! 4: *
! 5: * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited,
! 6: * non-exclusive and royalty-free license to use, copy, modify and
! 7: * redistribute, solely for non-commercial and non-profit purposes, the
! 8: * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and
! 9: * conditions of this Agreement. For the avoidance of doubt, you acquire
! 10: * only a limited right to use the SOFTWARE hereunder, and FLL or any
! 11: * third party developer retains all rights, including but not limited to
! 12: * copyrights, in and to the SOFTWARE.
! 13: *
! 14: * (1) FLL does not grant you a license in any way for commercial
! 15: * purposes. You may use the SOFTWARE only for non-commercial and
! 16: * non-profit purposes only, such as academic, research and internal
! 17: * business use.
! 18: * (2) The SOFTWARE is protected by the Copyright Law of Japan and
! 19: * international copyright treaties. If you make copies of the SOFTWARE,
! 20: * with or without modification, as permitted hereunder, you shall affix
! 21: * to all such copies of the SOFTWARE the above copyright notice.
! 22: * (3) An explicit reference to this SOFTWARE and its copyright owner
! 23: * shall be made on your publication or presentation in any form of the
! 24: * results obtained by use of the SOFTWARE.
! 25: * (4) In the event that you modify the SOFTWARE, you shall notify FLL by
! 26: * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification
! 27: * for such modification or the source code of the modified part of the
! 28: * SOFTWARE.
! 29: *
! 30: * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL
! 31: * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND
! 32: * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS
! 33: * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES'
! 34: * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY
! 35: * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY.
! 36: * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT,
! 37: * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
! 38: * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
! 39: * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES
! 40: * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES
! 41: * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY
! 42: * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
! 43: * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART
! 44: * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
! 45: * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
! 46: * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
! 47: *
! 48: * $OpenXM$
! 49: */
! 50: # if defined(VISUAL) || defined(__MINGW32__)
! 51: #include <time.h>
! 52: #else
! 53: #include <sys/time.h>
! 54: #include <sys/resource.h>
! 55: #endif
! 56: #include <setjmp.h>
! 57: #ifdef ABS
! 58: #undef ABS
! 59: #define ABS(a) ((a)>0?(a):-(a))
! 60: #endif
! 61:
! 62: #include <math.h>
! 63: #include <ctype.h>
! 64:
! 65: /* identifiers for expressions */
! 66:
! 67: typedef enum {
! 68: I_BOP, I_COP, I_AND, I_OR, I_NOT, I_CE,
! 69: I_PRESELF, I_POSTSELF,
! 70: I_FUNC, I_FUNC_OPT, I_IFUNC, I_MAP, I_RECMAP, I_PFDERIV,
! 71: I_ANS, I_PVAR, I_ASSPVAR,
! 72: I_FORMULA, I_LIST, I_STR, I_NEWCOMP, I_CAR, I_CDR, I_CAST,
! 73: I_INDEX, I_EV, I_TIMER, I_GF2NGEN, I_GFPNGEN, I_GFSNGEN,
! 74: I_LOP, I_OPT, I_GETOPT, I_POINT, I_PAREN, I_MINUS,
! 75: I_NARYOP, I_CONS, I_FUNC_QARG, I_FUNC_HEAD, I_EVM
! 76: } fid;
! 77:
! 78: /* identifiers for statements */
! 79:
! 80: typedef enum {
! 81: S_BP, S_PFDEF,
! 82: S_SINGLE, S_CPLX,
! 83: S_IFELSE, S_FOR, S_DO,
! 84: S_BREAK, S_RETURN, S_CONTINUE,
! 85: S_MODULE
! 86: } sid;
! 87:
! 88: /* identifiers for comparison operators */
! 89:
! 90: typedef enum { C_LT, C_GT, C_LE, C_GE, C_EQ, C_NE } cid;
! 91:
! 92: /* identifiers for logical operators */
! 93:
! 94: typedef enum { L_LT, L_GT, L_LE, L_GE, L_EQ, L_NE, L_AND, L_OR, L_NOT, L_IMPL, L_REPL, L_EQUIV } lid;
! 95:
! 96: /* identifiers for functions */
! 97:
! 98: typedef enum { A_UNDEF, A_BIN, A_USR, A_PURE, A_PARI } aid;
! 99:
! 100: /* identifiers for indeterminates */
! 101:
! 102: typedef enum { V_IND, V_UC, V_PF, V_SR } vid;
! 103:
! 104: typedef struct oVS {
! 105: unsigned int n;
! 106: unsigned int asize;
! 107: unsigned int at;
! 108: unsigned int level;
! 109: struct oFUNC *usrf;
! 110: struct oPV *va;
! 111: NODE opt;
! 112: } *VS;
! 113:
! 114: typedef struct oMODULE {
! 115: char *name;
! 116: VS pvs;
! 117: NODE usrf_list;
! 118: } *MODULE;
! 119:
! 120: typedef struct oPV {
! 121: char *name;
! 122: short attr,type;
! 123: pointer priv;
! 124: } *PV;
! 125:
! 126: typedef struct oINFILE {
! 127: char *name;
! 128: FILE *fp;
! 129: JMP_BUF jmpbuf;
! 130: int ready_for_longjmp;
! 131: int ln;
! 132: struct oINFILE *next;
! 133: char *tname;
! 134: int encoded;
! 135: short vol;
! 136: } *INFILE;
! 137:
! 138: struct oTKWD {
! 139: char *name;
! 140: int token;
! 141: };
! 142:
! 143: typedef struct fid_spec {
! 144: fid id;
! 145: farg_type type[10];
! 146: } *fid_spec_p;
! 147:
! 148: typedef struct oARF {
! 149: char *name;
! 150: void (*fp)();
! 151: } *ARF;
! 152:
! 153: typedef struct oFUNC {
! 154: char *name,*fullname;
! 155: int argc;
! 156: int type;
! 157: int secure;
! 158: aid id;
! 159: unsigned int quote;
! 160: union {
! 161: void (*binf)();
! 162: struct oUSRF *usrf;
! 163: struct oPF *puref;
! 164: } f;
! 165: } *FUNC;
! 166:
! 167: typedef struct oUSRF {
! 168: char *fname;
! 169: MODULE module;
! 170: int startl,endl;
! 171: NODE args;
! 172: VS pvs;
! 173: char *desc;
! 174: struct oSNODE *body;
! 175: } *USRF;
! 176:
! 177: typedef struct oPF {
! 178: char *name;
! 179: int argc;
! 180: Obj body;
! 181: V *args;
! 182: Obj *deriv;
! 183: NODE ins;
! 184: int (*pari)();
! 185: double (*libm)();
! 186: int (*simplify)();
! 187: } *PF;
! 188:
! 189: typedef struct oPFAD {
! 190: Obj arg;
! 191: int d;
! 192: } *PFAD;
! 193:
! 194: typedef struct oPFINS {
! 195: struct oPF *pf;
! 196: struct oPFAD ad[1];
! 197: } *PFINS;
! 198:
! 199: #define NEWPF(p) ((p)=(PF)MALLOC(sizeof(struct oPF)))
! 200:
! 201: typedef struct oFNODE {
! 202: short id;
! 203: unsigned normalized:1;
! 204: unsigned expanded:2;
! 205: unsigned coef:1;
! 206: pointer arg[1];
! 207: } *FNODE;
! 208:
! 209: #define NEWFNODE(a,b) \
! 210: ((a)=(FNODE)MALLOC(sizeof(struct oFNODE)+sizeof(pointer)*(b-1)))
! 211:
! 212: typedef struct oSNODE {
! 213: sid id;
! 214: int ln;
! 215: pointer arg[1];
! 216: } *SNODE;
! 217:
! 218: #define NEWSNODE(a,b) \
! 219: ((a)=(SNODE)MALLOC(sizeof(struct oSNODE)+sizeof(pointer)*(b-1)),(a)->ln=asir_infile->ln)
! 220:
! 221: typedef struct oPVI {
! 222: int pv;
! 223: NODE index;
! 224: } *PVI;
! 225:
! 226: typedef struct oNODE2 {
! 227: pointer body1,body2;
! 228: struct oNODE2 *next;
! 229: } *NODE2;
! 230:
! 231: struct ftab {
! 232: char *name;
! 233: void (*f)();
! 234: int argc;
! 235: unsigned int quote;
! 236: };
! 237:
! 238: struct wtab {
! 239: V v;
! 240: int w;
! 241: };
! 242:
! 243:
! 244: #define MKPVI(a,b,c)\
! 245: ((a)=(pointer)MALLOC(sizeof(struct oPVI)),((PVI)(a))->pv=(b),((PVI)(a))->index=(c))
! 246:
! 247: #define FA0(f) ((f)->arg[0])
! 248: #define FA1(f) ((f)->arg[1])
! 249: #define FA2(f) ((f)->arg[2])
! 250: #define FA3(f) ((f)->arg[3])
! 251: #define FA4(f) ((f)->arg[4])
! 252: #define FA5(f) ((f)->arg[5])
! 253: #define FA6(f) ((f)->arg[6])
! 254:
! 255: #define ARG0(a) ((a)->body)
! 256: #define ARG1(a) (NEXT(a)->body)
! 257: #define ARG2(a) (NEXT(NEXT(a))->body)
! 258: #define ARG3(a) (NEXT(NEXT(NEXT(a)))->body)
! 259: #define ARG4(a) (NEXT(NEXT(NEXT(NEXT((a)))))->body)
! 260: #define ARG5(a) (NEXT(NEXT(NEXT(NEXT(NEXT((a))))))->body)
! 261: #define ARG6(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a)))))))->body)
! 262: #define ARG7(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a))))))))->body)
! 263: #define ARG8(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a)))))))))->body)
! 264: #define ARG9(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a))))))))))->body)
! 265: #define ARG10(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a)))))))))))->body)
! 266:
! 267: #define asir_assert(ptr,id,message)\
! 268: switch ( id ) {\
! 269: case O_N: case O_P: case O_R:\
! 270: if( (ptr) && (OID(ptr) > (id)) ) {\
! 271: fprintf(stderr,message);\
! 272: error(" : invalid argument");\
! 273: }\
! 274: break;\
! 275: case O_DP:\
! 276: if( (ptr) && (OID(ptr) != (id)) ) {\
! 277: fprintf(stderr,message);\
! 278: error(" : invalid argument");\
! 279: }\
! 280: break;\
! 281: default:\
! 282: if( !(ptr) || (OID(ptr) != (id)) ) {\
! 283: fprintf(stderr,message);\
! 284: error(" : invalid argument");\
! 285: }\
! 286: break;\
! 287: }
! 288:
! 289: #define DEFSIZE 32
! 290: #define PVGLOBAL(i) (((unsigned long)(i))|(1<<30))
! 291: #define PVMGLOBAL(i) (((unsigned long)(i))|(2<<30))
! 292: #define PVPATTERN(i) (((unsigned long)(i))|(3<<30))
! 293: #define PVATTR(i) (((unsigned long)(i))>>30)
! 294: #define PVIND(i) (((unsigned long)(i))&0x3fffffff)
! 295: #define GETPV(i,p) \
! 296: (PVATTR(i)==0?(long)((p)=CPVS->va[(unsigned int)(i)].priv)\
! 297: :PVATTR(i)==1?(long)((p)=GPVS->va[PVIND(i)].priv)\
! 298: :PVATTR(i)==2?(long)((p)=MPVS->va[PVIND(i)].priv)\
! 299: :(long)((p)=PPVS->va[PVIND(i)].priv))
! 300:
! 301: #define GETPVREF(i,p) \
! 302: (PVATTR(i)==0?(long)((p)=&(CPVS->va[(unsigned long)(i)].priv))\
! 303: :PVATTR(i)==1?(long)((p)=&(GPVS->va[PVIND(i)].priv))\
! 304: :PVATTR(i)==2?(long)((p)=&(MPVS->va[PVIND(i)].priv))\
! 305: :(long)((p)=&(PPVS->va[PVIND(i)].priv)))
! 306:
! 307: #define GETPVNAME(i,p) \
! 308: (PVATTR(i)==0?(long)((p)=CPVS->va[(unsigned long)(i)].name)\
! 309: :PVATTR(i)==1?(long)((p)=GPVS->va[PVIND(i)].name)\
! 310: :PVATTR(i)==2?(long)((p)=MPVS->va[PVIND(i)].name)\
! 311: :(long)((p)=PPVS->va[PVIND(i)].name))
! 312:
! 313: #define ASSPV(i,p) \
! 314: (PVATTR(i)==0?(long)(CPVS->va[(unsigned long)(i)].priv=(pointer)(p))\
! 315: :PVATTR(i)==1?(long)(GPVS->va[PVIND(i)].priv=(pointer)(p))\
! 316: :PVATTR(i)==2?(long)(MPVS->va[PVIND(i)].priv=(pointer)(p))\
! 317: :(long)(PPVS->va[PVIND(i)].priv=(pointer)(p)))
! 318:
! 319: #define NEWNODE2(a) ((a)=(NODE2)MALLOC(sizeof(struct oNODE2)))
! 320: #define MKNODE2(a,b,c,d) \
! 321: (NEWNODE2(a),(a)->body1=(pointer)b,(a)->body2=(pointer)c,NEXT(a)=(NODE2)(d))
! 322: #define BDY1(a) ((a)->body1)
! 323: #define BDY2(a) ((a)->body2)
! 324:
! 325: extern VS GPVS,CPVS,EPVS,APVS,MPVS,PPVS;
! 326: extern MODULE CUR_MODULE;
! 327: extern NODE MODULE_LIST;
! 328: extern char *CUR_FUNC;
! 329: extern ARF addfs, subfs, mulfs, divfs, remfs, pwrfs;
! 330: extern INFILE asir_infile;
! 331: extern NODE usrf,sysf,noargsysf,ubinf,parif,ONENODE;
! 332: extern int nextbp,nextbplevel;
! 333: extern int Verbose;
! 334: extern int do_quiet;
! 335: extern SYMBOL Symbol_grlex, Symbol_glex, Symbol_lex;
! 336: extern NODE current_option;
! 337:
! 338: #if defined(VISUAL_LIB)
! 339: #include <w_stdio.h>
! 340: #undef getc
! 341: #define getc w_fgetc
! 342: #undef putc
! 343: #define putc w_fputc
! 344: #define fputc w_fputc
! 345: #define ungetc w_ungetc
! 346: #define fgets w_fgets
! 347: #define fputs w_fputs
! 348: #define printf w_printf
! 349: #define fprintf w_fprintf
! 350: #define fflush w_fflush
! 351: #endif
! 352:
! 353: #if defined(__GNUC__) || defined(VISUAL) || defined(__MINGW32__) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__)
! 354: NODE mknode(int,...);
! 355: FNODE mkfnode(int,fid,...);
! 356: SNODE mksnode(int,sid,...);
! 357: void call_usrf(FUNC f,...);
! 358: #else
! 359: NODE mknode();
! 360: FNODE mkfnode();
! 361: SNODE mksnode();
! 362: void call_usrf();
! 363: #endif
! 364:
! 365: /* prototypes */
! 366:
! 367: void dp_vtod(Q *,DP,DP *);
! 368: void dp_idivv_hist(Q,DP *);
! 369: void dp_igcdv_hist(DP,Q *);
! 370: void dp_ptozp3(DP,Z *,DP *);
! 371: void dp_ptozp2(DP,DP,DP *,DP *);
! 372: void dp_ptozp(DP,DP *);
! 373: void dp_nf_tab_mod(DP,LIST *,int,DP *);
! 374: void dp_lnf_mod(DP,DP,NODE,int,DP *,DP *);
! 375: void insert_to_node(DL,NODE *,int);
! 376: int _dl_redble(DL,DL,int);
! 377: void dp_mbase(NODE,NODE *);
! 378: void dp_dtov(DP,VECT *);
! 379: void dp_cont(DP,Z *);
! 380: void dp_idiv(DP,Z,DP *);
! 381: void dtodpm(DP d,int pos,DPM *dp);
! 382: void dpm_nf_z(NODE b,DPM g,DPM *ps,int full,int multiple,DPM *rp);
! 383: void dpm_nf_f(NODE b,DPM g,DPM *ps,int full,DPM *rp);
! 384: void weyl_actd(VL vl,DP p1,DP p2,DP *pr);
! 385: void dpm_sp(DPM p1,DPM p2,DPM *rp);
! 386: void initdpm(struct order_spec *spec,int type);
! 387: void dpm_ht(DPM p,DPM *rp);
! 388: void dpm_hm(DPM p,DPM *rp);
! 389:
! 390: int dp_nt(DP);
! 391: void dp_dehomo(DP,DP *);
! 392: void dp_homo(DP,DP *);
! 393: DL lcm_of_DL(int,DL,DL,DL);
! 394: void dp_rest(DP,DP *);
! 395: void dp_hm(DP,DP *);
! 396: void dp_sp_mod(DP,DP,int,DP *);
! 397: void dp_sp(DP,DP,DP *);
! 398: void dp_red(DP,DP,DP,DP *,DP *,P *,DP *);
! 399: void dp_subd(DP,DP,DP *);
! 400: void dp_red_mod(DP,DP,DP,int,DP *,DP *,P *);
! 401: int dp_redble(DP,DP);
! 402: int comp_nm(Q *,Q *);
! 403: void dp_true_nf_mod(NODE,DP,DP *,int,int,DP *,P *);
! 404: void dp_nf_mod(NODE,DP,DP *,int,int,DP *);
! 405: void dp_nf_mod_qindex(NODE,DP,DP *,int,int,DP *);
! 406: void dp_nf_ptozp(NODE,DP,DP *,int,int,DP *);
! 407: void dp_nf(NODE,DP,DP *,int,DP *);
! 408: void dp_rat(DP,DP *);
! 409: void dp_mod(DP,int,NODE,DP *);
! 410: void dp_prim_mod(DP,int,DP *);
! 411: void dp_prim(DP,DP *);
! 412: void heu_nezgcdnpz(VL,P *,int,P *);
! 413: void homogenize_order(struct order_spec *,int,struct order_spec **);
! 414: int create_order_spec(VL,Obj,struct order_spec **);
! 415:
! 416: int dl_equal(int,DL,DL);
! 417: void qltozl(Q *,int,Z *);
! 418:
! 419: int mainparse(SNODE *);
! 420: int exprparse(FUNC,char *,FNODE *);
! 421: void output_init(void);
! 422: void GC_init(void);
! 423: void env_init(void);
! 424: void soutput_init(char *);
! 425: void appendparif(NODE *,char *,int (*)(),int);
! 426: int mmono(P);
! 427: void mkpow(VL,Obj,Obj,Obj *);
! 428: void _printdp(DP);
! 429: int mt_save(char *);
! 430: int mt_load(char *);
! 431: void sortbynm(Q *,int);
! 432: void iqrv(VECT,Z,LIST *);
! 433: void cpp_main(int,char **);
! 434: int afternl(void);
! 435: void glob_init();
! 436: void input_init(FILE *,char *);
! 437: void asir_terminate(int);
! 438: void param_init(void);
! 439: void sprompt(char *);
! 440: void cppname_init();
! 441: void process_args(int,char **);
! 442: void sig_init(void);
! 443: void asir_save_handler(void);
! 444: void asir_set_handler(void);
! 445: void asir_reset_handler(void);
! 446: void resetenv(char *);
! 447: void fatal(int);
! 448: void restore_handler(void);
! 449: void resize_buffer(void);
! 450: void tty_init(void);
! 451: void tty_reset(void);
! 452: void set_timer(int);
! 453: void reset_timer(void);
! 454: void int_handler(int);
! 455: void segv_handler(int);
! 456: void bus_handler(int);
! 457: void fpe_handler(int);
! 458: void ill_handler(int);
! 459: void winch_handler(int);
! 460: void pipe_handler(int);
! 461: void usr1_handler(int);
! 462: void alrm_handler(int);
! 463: void ox_usr1_handler(int sig);
! 464: void copyright(void);
! 465: void kan_init(void);
! 466: void pushpvs(FUNC);
! 467: void read_eval_loop(void);
! 468: void prompt(void);
! 469: void storeans(pointer);
! 470: int yyparse(void);
! 471: void nodetod(NODE,DP *);
! 472: void poppvs(void);
! 473: int length(NODE);
! 474: size_t get_heapsize(void);
! 475: int searchpvar(char *);
! 476: void searchuf(char *name,FUNC *r);
! 477: void mkparif(char *,FUNC *);
! 478: void makevar(char *,P *);
! 479: void mkpvs(char *);
! 480: MODULE mkmodule(char *);
! 481: void stoarg(char *,int *,char **);
! 482: void yyerror(char *);
! 483: void closecurrentinput(void);
! 484: void asir_terminate(int);
! 485: void searchasirpath(char *,char **);
! 486: void get_vars(Obj,VL *);
! 487: void appendbinf(NODE *,char *,void(*)(),int,unsigned int);
! 488: void appendubinf(char *,void(*)(),int,unsigned int);
! 489: void parif_init(void);
! 490: void sysf_init(void);
! 491: void makesrvar(FUNC, P *);
! 492: void sprintexpr(VL,Obj);
! 493: void printexpr(VL,Obj);
! 494: void appendvar(VL,V);
! 495: void change_mvar(VL,P,V,P *);
! 496: void restore_mvar(VL,P,V,P *);
! 497: int argc(NODE);
! 498: // void printn(N);
! 499: // void sprintn(N);
! 500: void printv(VL,V);
! 501: void sprintv(VL,V);
! 502: int arf_comp(VL, Obj, Obj);
! 503: int complist(VL, LIST, LIST);
! 504: int getcompsize(int);
! 505: int getpvar(VS,char *,int);
! 506: int gettype(unsigned int);
! 507: int indextotype(int,int);
! 508: int loadfile(char *);
! 509: int loadfiles(NODE);
! 510: unsigned int makepvar(char *);
! 511: int membertoindex(int,char *);
! 512: int qcoefp(Obj);
! 513: int qcoefr(Obj);
! 514: int rangecheck(Obj,int);
! 515: int structtoindex(char *);
! 516: void _mkpfins(PF ,Obj *,V *);
! 517: void appendpfins(V ,V *);
! 518: void appenduf(char *,FUNC *);
! 519: void arf_add(VL, Obj, Obj, Obj *);
! 520: void arf_chsgn(Obj, Obj *);
! 521: void arf_div(VL, Obj, Obj, Obj *);
! 522: void arf_init(void);
! 523: void arf_mul(VL, Obj, Obj, Obj *);
! 524: void arf_pwr(VL, Obj, Obj, Obj *);
! 525: void arf_remain(VL, Obj, Obj, Obj *);
! 526: void arf_sub(VL, Obj, Obj, Obj *);
! 527: void bp(SNODE);
! 528: void clearbp(FUNC);
! 529: void debug(SNODE);
! 530: void debug_init(void);
! 531: void delbp(int, char **);
! 532: void derivr(VL ,Obj ,V ,Obj *);
! 533: void derivvar(VL ,V ,V ,Obj *);
! 534: void duppfins(V ,V *);
! 535: void error(char *);
! 536: void evalins(PFINS ,int ,Obj *);
! 537: void evalnodebody(NODE,NODE *);
! 538: void evalp(VL ,P ,int ,P *);
! 539: void evalr(VL ,Obj ,int ,Obj *);
! 540: void evalv(VL ,V ,int ,Obj *);
! 541: void getarrayp(Obj,NODE,Obj **);
! 542: void getmember(FNODE,Obj *);
! 543: void getmemberp(FNODE,Obj **);
! 544: void help(char *);
! 545: void instov(PFINS ,V *);
! 546: Obj memberofstruct(COMP,char *);
! 547: void mkpf(char *,Obj ,int ,V *,int (*)(),double (*)(),int (*)(),PF *);
! 548: void mkpfins(PF ,V *,V *);
! 549: void mkuf(char *,char *,NODE,SNODE,int,int,char *,MODULE);
! 550: void newstruct(int,struct oCOMP **);
! 551: void optobj(Obj *);
! 552: void println(int, char **, int);
! 553: void printvars(char *,VS);
! 554: void resetpvs(void);
! 555: void searchc(char *,FUNC *);
! 556: void searchf(NODE,char *,FUNC *);
! 557: void searchpf(char *,FUNC *);
! 558: void searchsn(SNODE *, int, SNODE **);
! 559: void setbp(char *);
! 560: void setf(int, char **);
! 561: void setstruct(char *,NODE);
! 562: void showbp(int);
! 563: void showbps(void);
! 564: void showpos(void);
! 565: void simplify_ins(PFINS ,Obj *);
! 566: void sprintvars(char *,VS);
! 567: int structdef(char *,NODE);
! 568: void substfp(VL ,Obj ,PF ,PF ,Obj *);
! 569: void substfr(VL ,Obj ,PF ,PF ,Obj *);
! 570: void substfv(VL ,V ,PF ,PF ,Obj *);
! 571: void substpr(VL ,int ,Obj ,V ,Obj ,Obj *);
! 572: void substr(VL ,int ,Obj ,V ,Obj ,Obj *);
! 573: void appendtonode(NODE,pointer, NODE *);
! 574: void getarray(pointer,NODE,pointer *);
! 575: void putarray(pointer,NODE,pointer);
! 576:
! 577: void addcomp(VL,COMP,COMP,COMP *);
! 578: void subcomp(VL,COMP,COMP,COMP *);
! 579: void mulcomp(VL,COMP,COMP,COMP *);
! 580: void divcomp(VL,COMP,COMP,COMP *);
! 581: void chsgncomp(COMP,COMP *);
! 582: void pwrcomp(VL,COMP,Obj,COMP *);
! 583: int compcomp(VL,COMP,COMP);
! 584:
! 585: void mergedeglist(NODE d0,NODE d1,NODE *dr);
! 586: void getdeglist(P p,V v,NODE *d);
! 587: void restore_mvar(VL vl,P p,V v,P *r);
! 588: void change_mvar(VL vl,P p,V v,P *r);
! 589: void getcoef(VL vl,P p,V v,Z d,P *r);
! 590: void ranp(int n,UP *nr);
! 591:
! 592: void _print_mp(int nv,MP m);
! 593: int dp_homogeneous(DP p);
! 594: int dp_nt(DP p);
! 595: int dl_equal(int nv,DL dl1,DL dl2);
! 596: DL lcm_of_DL(int nv,DL dl1,DL dl2,DL dl);
! 597: void dp_rest(DP p,DP *rp);
! 598: void dp_hm(DP p,DP *rp);
! 599: void dltod(DL d,int n,DP *rp);
! 600: void dp_subd(DP p1,DP p2,DP *rp);
! 601: int dp_redble(DP p1,DP p2);
! 602: void sortbynm(Q *w,int n);
! 603: int comp_nm(Q *a,Q *b);
! 604: void dp_rat(DP p,DP *rp);
! 605: void dp_mod(DP p,int mod,NODE subst,DP *rp);
! 606: void dp_dehomo(DP p,DP *rp);
! 607: void dp_homo(DP p,DP *rp);
! 608: void dp_nf_tab_mod(DP p,LIST *tab,int mod,DP *rp);
! 609: void dp_lnf_mod(DP p1,DP p2,NODE g,int mod,DP *r1p,DP *r2p);
! 610: void dp_lnf_f(DP p1,DP p2,NODE g,DP *r1p,DP *r2p);
! 611: void _dp_nf_mod_destructive(NODE b,DP g,DP *ps,int mod,int full,DP *rp);
! 612: void dp_true_nf_mod(NODE b,DP g,DP *ps,int mod,int full,DP *rp,P *dnp);
! 613: void dp_nf_mod(NODE b,DP g,DP *ps,int mod,int full,DP *rp);
! 614: void dp_nf_f(NODE b,DP g,DP *ps,int full,DP *rp);
! 615: void dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple,DP *rp);
! 616: void _dp_red_mod_destructive(DP p1,DP p2,int mod,DP *rp);
! 617: void dp_red_mod(DP p0,DP p1,DP p2,int mod,DP *head,DP *rest,P *dnp);
! 618: void dp_red_f(DP p1,DP p2,DP *rest);
! 619: void dp_red(DP p0,DP p1,DP p2,DP *head,DP *rest,P *dnp,DP *multp);
! 620: void _dp_sp_mod(DP p1,DP p2,int mod,DP *rp);
! 621: void _dp_sp_mod_dup(DP p1,DP p2,int mod,DP *rp);
! 622: void dp_sp_mod(DP p1,DP p2,int mod,DP *rp);
! 623: void _dp_sp_dup(DP p1,DP p2,DP *rp);
! 624: void dp_sp(DP p1,DP p2,DP *rp);
! 625: void dp_dtov(DP dp,VECT *rp);
! 626: void dp_prim_mod(DP p,int mod,DP *rp);
! 627: void heu_nezgcdnpz(VL vl,P *pl,int m,P *pr);
! 628: void dp_prim(DP p,DP *rp);
! 629: void dp_vtod(Q *c,DP p,DP *rp);
! 630: void insert_to_node(DL d,NODE *n,int nvar);
! 631: int _dl_redble(DL d1,DL d2,int nvar);
! 632: void dp_mbase(NODE hlist,NODE *mbase);
! 633: void dp_ptozp2(DP p0,DP p1,DP *hp,DP *rp);
! 634: void dp_ptozp(DP p,DP *rp);
! 635: void _dpmod_to_vect(DP f,DL *at,int *b);
! 636: void _tf_to_vect_compress(NODE tf,DL *at,CDP *b);
! 637: void dp_to_vect(DP f,DL *at,Q *b);
! 638: NODE dp_dllist(DP f);
! 639: NODE mul_dllist(DL d,DP f);
! 640: void pdl(NODE f);
! 641: void dp_gr_main(LIST f,LIST v,Num homo,int modular,int field,struct order_spec *ord,LIST *rp);
! 642: void dp_gr_mod_main(LIST f,LIST v,Num homo,int m,struct order_spec *ord,LIST *rp);
! 643: void dp_f4_main(LIST f,LIST v,struct order_spec *ord,LIST *rp);
! 644: void dp_f4_mod_main(LIST f,LIST v,int m,struct order_spec *ord,LIST *rp);
! 645: NODE gb_f4(NODE f);
! 646: NODE gb_f4_mod(NODE f,int m);
! 647: NODE gb_f4_mod_old(NODE f,int m);
! 648: int dpm_redble(DPM p1,DPM p2);
! 649:
! 650: int DPPlength(DP_pairs n);
! 651: void printdl(DL dl);
! 652: void pltovl(LIST l,VL *vl);
! 653: void makesubst(VL v,NODE *s);
! 654: void printsubst(NODE s);
! 655: void vlminus(VL v,VL w,VL *d);
! 656: int validhc(P a,int m,NODE s);
! 657: void setup_arrays(NODE f,int m,NODE *r);
! 658: void prim_part(DP f,int m,DP *r);
! 659: NODE /* of DP */ NODE_sortb_insert( DP newdp, NODE /* of DP */ nd, int dec );
! 660: NODE NODE_sortb( NODE node, int dec );
! 661: NODE /* of index */ NODE_sortbi_insert( int newdpi, NODE /* of index */ nd, int dec );
! 662: NODE NODE_sortbi( NODE node, int dec );
! 663: void reduceall(NODE in,NODE *h);
! 664: void reduceall_mod(NODE in,int m,NODE *h);
! 665: int newps(DP a,int m,NODE subst);
! 666: int newps_nosave(DP a,int m,NODE subst);
! 667: int newps_mod(DP a,int m);
! 668: void reducebase_dehomo(NODE f,NODE *g);
! 669: NODE append_one(NODE f,long n);
! 670: DP_pairs minp( DP_pairs d, DP_pairs *prest );
! 671: void minsugar(DP_pairs d,DP_pairs *dm,DP_pairs *dr);
! 672: NODE gb(NODE f,int m,NODE subst);
! 673: NODE gb_mod(NODE f,int m);
! 674: DP_pairs updpairs( DP_pairs d, NODE /* of index */ g, int t);
! 675: DP_pairs newpairs( NODE /* of index */ g, int t );
! 676: DP_pairs criterion_B( DP_pairs d, int s );
! 677: DP_pairs criterion_M( DP_pairs d1 );
! 678: int criterion_2( int dp1, int dp2 );
! 679: DP_pairs criterion_F( DP_pairs d1 );
! 680: NODE updbase(NODE g,int t);
! 681: NODE /* of index */ remove_reducibles(NODE /* of index */ nd, int newdp );
! 682: int dl_redble(DL dl1,DL dl2);
! 683: int dl_weyl_weight(DL dl);
! 684: int gbcheck(NODE f);
! 685: int membercheck(NODE f,NODE x);
! 686: void dp_set_flag(Obj name,Obj value);
! 687: void dp_make_flaglist(LIST *list);
! 688: void dp_save(int index,Obj p,char *prefix);
! 689: void dp_load(int index,DP *p);
! 690: int dp_load_t(int index,DP *p);
! 691: void init_stat();
! 692: void print_stat();
! 693: void dp_mulc_d(DP p,P c,DP *r);
! 694: void _dp_nf(NODE b,DP g,DP *ps,int full,DP *rp);
! 695: void _dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple,DP *r);
! 696: void dp_imul_d(DP p,Q q,DP *rp);
! 697: void imulv(VECT w,Q c,VECT *rp);
! 698: void dptoca(DP p,unsigned int **rp);
! 699: int yylex();
! 700: void purge_stdin();
! 701: int afternl();
! 702: int aftercomment();
! 703: int myatoi(char *s);
! 704: void yyerror(char *s);
! 705: int Egetc(FILE *fp);
! 706: void Eungetc(int c,FILE *fp);
! 707: void get_line(char *buf);
! 708: int readline_getc();
! 709: void readline_ungetc();
! 710: char *readline_console(char *prompt);
! 711: void ox_usr1_handler(int sig);
! 712: void env_init();
! 713: void loadasirfile(char *name0);
! 714: void execasirfile(char *name);
! 715: void load_and_execfile(char *name);
! 716: int loadfile(char *s);
! 717: int loadfiles(NODE node);
! 718: unsigned char encrypt_char(unsigned char c);
! 719: unsigned char decrypt_char(unsigned char c);
! 720: void encrypt_file(char *in,char *out);
! 721: void decrypt_file(char *in,char *out);
! 722: void get_vars(Obj t,VL *vlp);
! 723: void get_vars_recursive(Obj obj,VL *vlp);
! 724: int comp_obj(Obj *a,Obj *b);
! 725: int generic_comp_obj(Obj *a,Obj *b);
! 726: void sepvect(VECT v,int d,VECT *rp);
! 727: int gauss_elim_mod(int **mat,int row,int col,int md);
! 728: // int inttorat(N c,N m,N b,int *sgnp,N *nmp,N *dnp);
! 729: // int intmtoratm(MAT mat,N md,MAT nm,Q *dn);
! 730: // int intmtoratm_q(MAT mat,N md,MAT nm,Q *dn);
! 731: void reduce_reducers_mod(int **mat,int row,int col,int md);
! 732: void pre_reduce_mod(int **mat,int row,int col,int nred,int md);
! 733: void reduce_sp_by_red_mod(int *sp,int **redmat,int *ind,int nred,int col,int md);
! 734: void red_by_compress(int m,unsigned int *p,unsigned int *r,
! 735: unsigned int *ri,unsigned int hc,int len);
! 736: void red_by_vect(int m,unsigned int *p,unsigned int *r,unsigned int hc,int len);
! 737: void reduce_sp_by_red_mod_compress (int *sp,CDP *redmat,int *ind,
! 738: int nred,int col,int md);
! 739: int lu_gfmmat(GFMMAT mat,unsigned int md,int *perm);
! 740: int find_lhs_and_lu_mod(unsigned int **a,int row,int col,
! 741: unsigned int md,int **rinfo,int **cinfo);
! 742: void solve_by_lu_mod(int **a,int n,int md,int **b,int l,int normalize);
! 743: int gauss_elim_mod1(int **mat,int row,int col,int md);
! 744: int gauss_elim_geninv_mod(unsigned int **mat,int row,int col,int md);
! 745: void solve_by_lu_gfmmat(GFMMAT lu,unsigned int md,unsigned int *b,unsigned int *x);
! 746: void mat_to_gfmmat(MAT m,unsigned int md,GFMMAT *rp);
! 747: int gauss_elim_geninv_mod_swap(unsigned int **mat,int row,int col,
! 748: unsigned int md,unsigned int ***invmatp,int **indexp);
! 749: int generate_ONB_polynomial(UP2 *rp,int m,int type);
! 750: int _generate_irreducible_polynomial(UP2 f,int d);
! 751: int _generate_good_irreducible_polynomial(UP2 f,int d);
! 752: void printqmat(Q **mat,int row,int col);
! 753: void printimat(int **mat,int row,int col);
! 754: void ixor(Z n1,Z n2,Z *r);
! 755: void ior(Z n1,Z n2,Z *r);
! 756: void iand(Z n1,Z n2,Z *r);
! 757: void isqrt(Z a,Z *r);
! 758: void igcd_cofactor(Z a,Z b,Z *gcd,Z *ca,Z *cb);
! 759: int TypeT_NB_check(unsigned int m, unsigned int t);
! 760: int small_jacobi(int a,int m);
! 761: void pushpvs(FUNC f);
! 762: void poppvs();
! 763: unsigned int makepvar(char *str);
! 764: int searchpvar(char *str);
! 765: int getpvar(VS pvs,char *str,int searchonly);
! 766: void closecurrentinput();
! 767: void resetpvs();
! 768: void savepvs();
! 769: void restorepvs();
! 770: void storeans(pointer p);
! 771: void get_rootdir(char *name,int len);
! 772: void set_rootdir(char *name);
! 773: int process_id();
! 774: void call_exe(char *name,char **av);
! 775: void addquote(VL vl,QUOTE a,QUOTE b,QUOTE *c);
! 776: void subquote(VL vl,QUOTE a,QUOTE b,QUOTE *c);
! 777: void mulquote(VL vl,QUOTE a,QUOTE b,QUOTE *c);
! 778: void divquote(VL vl,QUOTE a,QUOTE b,QUOTE *c);
! 779: void pwrquote(VL vl,QUOTE a,QUOTE b,QUOTE *c);
! 780: void chsgnquote(QUOTE a,QUOTE *c);
! 781: void objtoquote(Obj a,QUOTE *c);
! 782: void polytoquote(P a,QUOTE *c);
! 783: void dptoquote(DP a,QUOTE *c);
! 784: void dctoquote(DCP dc,QUOTE v,QUOTE *c,int *sgn);
! 785: void mptoquote(MP m,int n,QUOTE *c,int *sgn);
! 786: void vartoquote(V v,QUOTE *c);
! 787: void fnodetotree(FNODE f,LIST *rp);
! 788: int compfnode(FNODE f1,FNODE f2);
! 789: FNODE eval_pvar_in_fnode(FNODE f);
! 790: FNODE subst_in_fnode(FNODE f,V v,FNODE g);
! 791: char *get_attribute(char *key,LIST attr);
! 792: void treetofnode(Obj obj,FNODE *f);
! 793: void glob_init() ;
! 794: void input_init(FILE *fp,char *name);
! 795: void notdef(VL vl,Obj a,Obj b,Obj *c);
! 796: void ExitAsir() ;
! 797: void asir_terminate(int status);
! 798: void param_init() ;
! 799: void prompt() ;
! 800: void sprompt(char *ptr);
! 801: void process_args(int ac,char **av);
! 802: void sig_init() ;
! 803: void asir_save_handler() ;
! 804: void asir_set_handler() ;
! 805: void asir_reset_handler() ;
! 806: void resetenv(char *s);
! 807: void fatal(int n);
! 808: void int_handler(int sig);
! 809: void restore_handler() ;
! 810: void segv_handler(int sig);
! 811: void ill_handler(int sig);
! 812: void alrm_handler(int sig);
! 813: void bus_handler(int sig);
! 814: void fpe_handler(int sig);
! 815: void pipe_handler(int sig);
! 816: void resize_buffer();
! 817: void tty_init() ;
! 818: void tty_reset() ;
! 819: void set_lasterror(char *s);
! 820: void error(char *s);
! 821: void set_timer(int interval);
! 822: void reset_timer();
! 823: void copyright() ;
! 824: void show_debug_window(int on);
! 825: void init_cmdwin();
! 826: void searchpf(char *name,FUNC *fp);
! 827: void searchc(char *name,FUNC *fp);
! 828: void mkpf(char *name,Obj body,int argc,V *args,
! 829: int (*parif)(),double (*libmf)(), int (*simp)(),PF *pfp);
! 830: void mkpfins(PF pf,V *args,V *vp);
! 831: void _mkpfins(PF pf,Obj *args,V *vp);
! 832: void _mkpfins_with_darray(PF pf,Obj *args,int *darray,V *vp);
! 833: void appendpfins(V v,V *vp);
! 834: void duppfins(V v,V *vp);
! 835: void derivvar(VL vl,V pf,V v,Obj *a);
! 836: void derivr(VL vl,Obj a,V v,Obj *b);
! 837: void substr(VL vl,int partial,Obj a,V v,Obj b,Obj *c);
! 838: void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *pr);
! 839: void evalr(VL vl,Obj a,int prec,Obj *c);
! 840: void evalp(VL vl,P p,int prec,P *pr);
! 841: void evalv(VL vl,V v,int prec,Obj *rp);
! 842: void evalins(PFINS ins,int prec,Obj *rp);
! 843: void devalr(VL vl,Obj a,Obj *c);
! 844: void devalp(VL vl,P p,P *pr);
! 845: void devalv(VL vl,V v,Obj *rp);
! 846: void devalins(PFINS ins,Obj *rp);
! 847: void simplify_ins(PFINS ins,Obj *rp);
! 848: void instov(PFINS ins,V *vp);
! 849: void substfr(VL vl,Obj a,PF u,PF f,Obj *c);
! 850: void substfp(VL vl,Obj p,PF u,PF f,Obj *pr);
! 851: void substfv(VL vl,V v,PF u,PF f,Obj *c);
! 852: int structdef(char *name,NODE member);
! 853: void newstruct(int type,COMP *rp);
! 854: int structtoindex(char *name);
! 855: int membertoindex(int type,char *name);
! 856: int getcompsize(int type);
! 857: Obj memberofstruct(COMP a,char *name);
! 858: void assign_to_member(COMP a,char *name,Obj obj);
! 859: void node_concat_dup(NODE n1,NODE n2,NODE *nr);
! 860: pointer evall(lid id,Obj a1,Obj a2);
! 861: pointer eval(FNODE f);
! 862: pointer evalstat(SNODE f);
! 863: pointer evalnode(NODE node);
! 864: pointer evalf(FUNC f,FNODE a,FNODE opt);
! 865: pointer evalparif(FUNC f,NODE a);
! 866: pointer evalf_deriv(FUNC f,FNODE a,FNODE deriv);
! 867: pointer evalmapf(FUNC f,FNODE a);
! 868: pointer eval_rec_mapf(FUNC f,FNODE a);
! 869: pointer beval_rec_mapf(FUNC f,NODE node);
! 870: pointer bevalf(FUNC f,NODE a);
! 871: pointer bevalf_with_opts(FUNC f,NODE a,NODE opts);
! 872: pointer evalif(FNODE f,FNODE a,FNODE opt);
! 873: pointer evalpf(PF pf,NODE args,NODE deriv);
! 874: void evalnodebody(NODE sn,NODE *dnp);
! 875: void gen_searchf(char *name,FUNC *r);
! 876: void gen_searchf_searchonly(char *name,FUNC *r,int global);
! 877: void searchf(NODE fn,char *name,FUNC *r);
! 878: void appenduf(char *name,FUNC *r);
! 879: void mkparif(char *name,FUNC *r);
! 880: void mkuf(char *name,char *fname,NODE args,SNODE body,int startl,int endl,char *desc,MODULE module);
! 881: Obj getopt_from_cpvs(char *key);
! 882: void des_enc(unsigned long *, unsigned char *, unsigned long *);
! 883: unsigned long round_func(unsigned long , unsigned char *);
! 884: unsigned long s_box_func(unsigned char *);
! 885: void des_dec(unsigned long *, unsigned char *, unsigned long *);
! 886: void key_schedule(unsigned char *,unsigned char *);
! 887: void debug_init();
! 888: void add_alias(char *com,char *alias);
! 889: void show_alias(char *alias);
! 890: void debug(SNODE f);
! 891: void setf(int ac,char **av);
! 892: void setbp(char *p);
! 893: void settp(char *p);
! 894: void clearbp(FUNC f);
! 895: int searchbp();
! 896: void delbp(int ac,char **av);
! 897: void showbps();
! 898: void showbp(int n);
! 899: void searchsn(SNODE *fp,int n,SNODE **fpp);
! 900: void bp(SNODE f);
! 901: void println(int ac,char **av,int l);
! 902: void printvars(char *s,VS vs);
! 903: void showpos();
! 904: void showpos_to_string(char *buf);
! 905: void change_stack(int level,NODE *pvss);
! 906: void show_stack(VS vs);
! 907: int estimate_length(VL vl,pointer p);
! 908: void send_progress(short per,char *msg);
! 909: void set_error(int code,char *reason,char *action);
! 910: double get_current_time();
! 911: void mp_abs(NODE arg,Num *rp);
! 912: int get_opt(char *key0,Obj *r);
! 913:
! 914: #if defined(VISUAL) || defined(__MINGW32__)
! 915: void ox_plot_main()
! 916: #else
! 917: void ox_plot_main(int argc,char **argv);
! 918: #endif
! 919: void launch_main(int argc,char **argv);
! 920: void ox_main(int argc,char **argv);
! 921: void order_init();
! 922: void print_crossref(FUNC f);
! 923: void showpos_to_list(LIST *r);
! 924: void update_LASTCO();
! 925:
! 926: void get_fid_spec(fid id,fid_spec_p *spec);
! 927: FNODE strip_paren(FNODE f);
! 928: NODE flatten_fnodenode(NODE n,char *opname);
! 929: FNODE flatten_fnode(FNODE f,char *opname);
! 930: int compquote(VL vl,QUOTE q1,QUOTE q2);
! 931: int compqa(VL vl,QUOTEARG q1,QUOTEARG q2);
! 932: int compfnode(FNODE f1,FNODE f2);
! 933: void shuffle_mulnbp(VL vl,NBP p1,NBP p2, NBP *rp);
! 934: void harmonic_mulnbp(VL vl,NBP p1,NBP p2, NBP *rp);
! 935: void mulnbmnbp(VL vl,NBM m,NBP p, NBP *rp);
! 936: void mulnbpnbm(VL vl,NBP p,NBM m, NBP *rp);
! 937: P separate_nbm(NBM a,NBP *a0,NBP *ah,NBP *ar);
! 938: P separate_tail_nbm(NBM a,NBP *a0,NBP *ar,NBP *at);
! 939: P separate_xky_nbm(NBM a,NBP *a0,NBP *ah,NBP *ar);
! 940:
! 941: int fnode_is_var(FNODE f);
! 942: int fnode_is_coef(FNODE f);
! 943: int fnode_is_number(FNODE f);
! 944: int fnode_is_rational(FNODE f);
! 945: int fnode_is_integer(FNODE f);
! 946: int fnode_is_nonnegative_integer(FNODE f);
! 947: int fnode_is_one(FNODE f);
! 948: int fnode_is_minusone(FNODE f);
! 949: int fnode_is_dependent(FNODE f,V v);
! 950:
! 951: int nfnode_weight(struct wtab *tab,FNODE f);
! 952: int nfnode_comp(FNODE f1,FNODE f2);
! 953: int nfnode_comp_lex(FNODE f1,FNODE f2);
! 954: int nfnode_match(FNODE f,FNODE pat,NODE *rp);
! 955: int nfnode_match_naryadd(FNODE f,FNODE p,NODE *rp);
! 956: int nfnode_match_narymul(FNODE f,FNODE p,NODE *rp);
! 957:
! 958: int exprparse_create_var(FUNC f,char *str,SNODE *statp);
! 959: int obj_is_dependent(Obj a,V v);
! 960: void instoobj(PFINS ins,Obj *rp);
! 961: void goto_toplevel(char *s);
! 962: void add_bucket(GeoBucket g,NODE d,int nv);
! 963:
! 964: #if defined(GC7)
! 965: void *GC_get_main_stack_base();
! 966: #else
! 967: void *GC_get_stack_base();
! 968: #endif
! 969:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>