Annotation of OpenXM_contrib2/asir2000/parse/parse.h, Revision 1.5
1.3 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
1.4 noro 26: * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification
1.3 noro 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: *
1.5 ! noro 48: * $OpenXM: OpenXM_contrib2/asir2000/parse/parse.h,v 1.4 2000/08/22 05:04:27 noro Exp $
1.3 noro 49: */
1.1 noro 50: # if defined(THINK_C) || defined(VISUAL)
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: /* identifiers for expressions */
63:
64: typedef enum {
65: I_BOP, I_COP, I_AND, I_OR, I_NOT, I_CE,
66: I_PRESELF, I_POSTSELF,
67: I_FUNC, I_FUNC_OPT, I_IFUNC, I_MAP, I_PFDERIV,
68: I_ANS, I_PVAR, I_ASSPVAR,
69: I_FORMULA, I_LIST, I_STR, I_NEWCOMP, I_CAR, I_CDR, I_CAST,
70: I_COM, I_PROC, I_INDEX, I_EV, I_TIMER, I_GF2NGEN, I_GFPNGEN, I_LOP,
1.5 ! noro 71: I_OPT, I_GETOPT, I_POINT
1.1 noro 72: } fid;
73:
74: /* identifiers for statements */
75:
76: typedef enum {
77: S_BP, S_PFDEF,
78: S_SINGLE, S_CPLX,
79: S_IFELSE, S_FOR, S_DO,
80: S_BREAK, S_RETURN, S_CONTINUE
81: } sid;
82:
83: /* identifiers for comparison operators */
84:
85: typedef enum { C_LT, C_GT, C_LE, C_GE, C_EQ, C_NE } cid;
86:
87: /* identifiers for logical operators */
88:
89: 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;
90:
91: /* identifiers for functions */
92:
93: typedef enum { A_UNDEF, A_BIN, A_USR, A_PURE, A_PARI } aid;
94:
95: /* identifiers for indeterminates */
96:
97: typedef enum { V_IND, V_UC, V_PF, V_SR } vid;
98:
99: struct oVS {
100: unsigned int n;
101: unsigned int asize;
102: unsigned int at;
103: unsigned int level;
104: struct oFUNC *usrf;
105: struct oPV *va;
106: NODE opt;
107: };
108:
109: typedef struct oVS *VS;
110:
111: struct oPV {
112: char *name;
113: short attr,type;
114: pointer priv;
115: };
116:
117: typedef struct oPV *PV;
118:
119: struct oIN {
120: char *name;
121: FILE *fp;
122: int ln;
123: struct oIN *next;
124: char *tname;
125: int encoded;
126: short vol;
127: };
128:
129: typedef struct oIN *IN;
130:
131: struct oTKWD {
132: char *name;
133: int token;
134: };
135:
136: struct oARF {
137: char *name;
138: void (*fp)();
139: };
140:
141: typedef struct oARF *ARF;
142:
143: struct oFUNC {
144: char *name;
145: int argc;
146: int type;
147: aid id;
148: union {
149: void (*binf)();
150: struct oUSRF *usrf;
151: struct oPF *puref;
152: } f;
153: };
154:
155: typedef struct oFUNC *FUNC;
156:
157: struct oUSRF {
158: char *fname;
159: short vol;
160: int startl,endl;
161: NODE args;
162: VS pvs;
163: char *desc;
164: struct oSNODE *body;
165: };
166:
167: typedef struct oUSRF *USRF;
168:
169: struct oPF {
170: char *name;
171: int argc;
172: Obj body;
173: V *args;
174: Obj *deriv;
175: NODE ins;
176: int (*pari)();
177: double (*libm)();
178: int (*simplify)();
179: };
180:
181: typedef struct oPF *PF;
182:
183: struct oPFAD {
184: Obj arg;
185: int d;
186: };
187:
188: typedef struct oPFAD *PFAD;
189:
190: struct oPFINS {
191: struct oPF *pf;
192: struct oPFAD ad[1];
193: };
194:
195: typedef struct oPFINS *PFINS;
196:
197: #define NEWPF(p) ((p)=(PF)MALLOC(sizeof(struct oPF)))
198:
199: struct oFNODE {
200: fid id;
201: pointer arg[1];
202: };
203:
204: typedef struct oFNODE *FNODE;
205:
206: #define NEWFNODE(a,b) \
207: ((a)=(FNODE)MALLOC(sizeof(struct oFNODE)+sizeof(pointer)*(b-1)))
208:
209: struct oSNODE {
210: sid id;
211: int ln;
212: pointer arg[1];
213: };
214:
215: typedef struct oSNODE *SNODE;
216:
217: #define NEWSNODE(a,b) \
218: ((a)=(SNODE)MALLOC(sizeof(struct oSNODE)+sizeof(pointer)*(b-1)),(a)->ln=asir_infile->ln)
219:
220: struct oPVI {
221: int pv;
222: NODE index;
223: };
224:
225: typedef struct oPVI *PVI;
226:
227: struct oNODE2 {
228: pointer body1,body2;
229: struct oNODE2 *next;
230: };
231:
232: typedef struct oNODE2 *NODE2;
233:
234: struct ftab {
235: char *name;
236: void (*f)();
237: int argc;
238: };
239:
240: #define MKPVI(a,b,c)\
241: ((a)=(pointer)MALLOC(sizeof(struct oPVI)),((PVI)(a))->pv=(b),((PVI)(a))->index=(c))
242:
243: #define FA0(f) ((f)->arg[0])
244: #define FA1(f) ((f)->arg[1])
245: #define FA2(f) ((f)->arg[2])
246: #define FA3(f) ((f)->arg[3])
247: #define FA4(f) ((f)->arg[4])
248: #define FA5(f) ((f)->arg[5])
249: #define FA6(f) ((f)->arg[6])
250:
251: #define ARG0(a) ((a)->body)
252: #define ARG1(a) (NEXT(a)->body)
253: #define ARG2(a) (NEXT(NEXT(a))->body)
254: #define ARG3(a) (NEXT(NEXT(NEXT(a)))->body)
255: #define ARG4(a) (NEXT(NEXT(NEXT(NEXT((a)))))->body)
256: #define ARG5(a) (NEXT(NEXT(NEXT(NEXT(NEXT((a))))))->body)
257: #define ARG6(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a)))))))->body)
258: #define ARG7(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a))))))))->body)
259: #define ARG8(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a)))))))))->body)
260: #define ARG9(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a))))))))))->body)
261: #define ARG10(a) (NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT(NEXT((a)))))))))))->body)
262:
263: #define asir_assert(ptr,id,message)\
264: switch ( id ) {\
265: case O_N: case O_P: case O_R:\
266: if( (ptr) && (OID(ptr) > (id)) ) {\
267: fprintf(stderr,message);\
268: error(" : invalid argument");\
269: }\
270: break;\
271: case O_DP:\
272: if( (ptr) && (OID(ptr) != (id)) ) {\
273: fprintf(stderr,message);\
274: error(" : invalid argument");\
275: }\
276: break;\
277: default:\
278: if( !(ptr) || (OID(ptr) != (id)) ) {\
279: fprintf(stderr,message);\
280: error(" : invalid argument");\
281: }\
282: break;\
283: }
284:
285: #define DEFSIZE 32
286: #define MSB (1<<31)
287: #define GETPV(i,p) \
288: ((int)(i)>=0 ? (int)((p)=CPVS->va[(unsigned int)(i)].priv)\
289: : (int)((p)=GPVS->va[(unsigned int)(i)&(~MSB)].priv))
290: #define ASSPV(i,p) \
291: ((int)(i)>=0 ? (int)(CPVS->va[(unsigned int)(i)].priv=(pointer)(p))\
292: : (int)(GPVS->va[(unsigned int)(i)&(~MSB)].priv=(pointer)(p)))
293:
294: #define NEWNODE2(a) ((a)=(NODE2)MALLOC(sizeof(struct oNODE2)))
295: #define MKNODE2(a,b,c,d) \
296: (NEWNODE2(a),(a)->body1=(pointer)b,(a)->body2=(pointer)c,NEXT(a)=(NODE2)(d))
297: #define BDY1(a) ((a)->body1)
298: #define BDY2(a) ((a)->body2)
299:
300: extern VS GPVS,CPVS,EPVS,APVS;
301: extern ARF addfs, subfs, mulfs, divfs, remfs, pwrfs;
302: extern IN asir_infile;
303: extern NODE usrf,sysf,noargsysf,ubinf,parif,ONENODE;
304: extern int nextbp,nextbplevel;
305: extern int Verbose;
306:
307: #if defined(VISUAL_LIB)
308: #include <w_stdio.h>
309: #undef getc
310: #define getc w_fgetc
311: #undef putc
312: #define putc w_fputc
313: #define fputc w_fputc
314: #define ungetc w_ungetc
315: #define fgets w_fgets
316: #define fputs w_fputs
317: #define printf w_printf
318: #define fprintf w_fprintf
319: #define fflush w_fflush
320: #endif
321:
322: #if defined(THINK_C) || defined(VISUAL)
323: NODE mknode(int,...);
324: FNODE mkfnode(int,fid,...);
325: SNODE mksnode(int,sid,...);
326: void call_usrf(FUNC f,...);
327: #else
328: NODE mknode();
329: FNODE mkfnode();
330: SNODE mksnode();
331: void call_usrf();
332: #endif
333:
334: /* prototypes */
335:
336: #if 1 || defined(THINK_C) || defined(VISUAL)
337: void dp_ptozp2_d(NODE,int,DP,DP,DP *,DP *);
338: void dp_ptozp_d(NODE,int,DP,DP *);
339: void dp_ptozp_d_old(NODE,int,DP,DP *);
340: void dp_vtod(Q *,DP,DP *);
341: void dp_idivv_hist(Q,DP *);
342: void dp_igcdv_hist(DP,Q *);
343: void dp_ptozp2(DP,DP,DP *,DP *);
344: void dp_ptozp(DP,DP *);
345: void dp_nf_tab_mod(DP,LIST *,int,DP *);
346: void dp_lnf_mod(DP,DP,NODE,int,DP *,DP *);
347: void insert_to_node(DL,NODE *,int);
348: int _dl_redble(DL,DL,int);
349: void dp_mbase(NODE,NODE *);
350: void dp_dtov(DP,VECT *);
351: void dp_cont(DP,Q *);
352: void dp_idiv(DP,Q,DP *);
353:
354: int dp_nt(DP);
355: void dp_dehomo(DP,DP *);
356: void dp_homo(DP,DP *);
357: DL lcm_of_DL(int,DL,DL,DL);
358: void dp_rest(DP,DP *);
359: void dp_hm(DP,DP *);
360: void dp_sp_mod(DP,DP,int,DP *);
361: void dp_sp(DP,DP,DP *);
1.2 noro 362: void dp_red(DP,DP,DP,DP *,DP *,P *,DP *);
1.1 noro 363: void dp_subd(DP,DP,DP *);
364: void dp_red_mod(DP,DP,DP,int,DP *,DP *,P *);
365: int dp_redble(DP,DP);
366: int comp_nm(Q *,Q *);
367: void dp_true_nf_mod(NODE,DP,DP *,int,int,DP *,P *);
368: void dp_nf_mod(NODE,DP,DP *,int,int,DP *);
369: void dp_nf_mod_qindex(NODE,DP,DP *,int,int,DP *);
370: void dp_nf_ptozp(NODE,DP,DP *,int,int,DP *);
371: void dp_true_nf(NODE,DP,DP *,int,DP *,P *);
372: void dp_nf(NODE,DP,DP *,int,DP *);
373: void dp_rat(DP,DP *);
374: void dp_mod(DP,int,NODE,DP *);
375: void dp_prim_mod(DP,int,DP *);
376: void dp_prim(DP,DP *);
377: void heu_nezgcdnpz(VL,P *,int,P *);
378: void homogenize_order(struct order_spec *,int,struct order_spec *);
379: int create_order_spec(Obj,struct order_spec *);
380:
381: int dl_equal(int,DL,DL);
382: void qltozl(Q *,int,Q *);
383: int cmpdl_matrix(int,DL,DL);
384: int cmpdl_order_pair(int,DL,DL);
385: int cmpdl_elim(int,DL,DL);
386: int cmpdl_blexrev(int,DL,DL);
387: int cmpdl_bgradrev(int,DL,DL);
388: int cmpdl_brevrev(int,DL,DL);
389: int cmpdl_brevgradlex(int,DL,DL);
390: int cmpdl_bgradlex(int,DL,DL);
391: int cmpdl_blex(int,DL,DL);
392: int cmpdl_revgradlex(int,DL,DL);
393: int cmpdl_gradlex(int,DL,DL);
394: int cmpdl_revlex(int,DL,DL);
395: int cmpdl_lex(int,DL,DL);
396: int compd(VL,DP,DP);
397: void adddl(int,DL,DL,DL *);
398: void divsdc(VL,DP,P,DP *);
399: void muldc(VL,DP,P,DP *);
400: void muldm(VL,DP,MP,DP *);
401: void muld(VL,DP,DP,DP *);
402: void chsgnd(DP,DP *);
403: void subd(VL,DP,DP,DP *);
404: void addd(VL,DP,DP,DP *);
405: int sugard(MP);
406: void nodetod(NODE,DP *);
407: void dtop(VL,VL,DP,P *);
408: void ptod(VL,VL,P,DP *);
409: void initd(struct order_spec *);
410:
411: int mainparse(SNODE *);
412: int exprparse(FUNC,char *,FNODE *);
413: void output_init(void);
414: void GC_init(void);
415: void env_init(void);
416: void soutput_init(char *);
417: void appendparif(NODE *,char *,int (*)(),int);
418: int mmono(P);
419: void mkpow(VL,Obj,Obj,Obj *);
420: void _printdp(DP);
421: int mt_save(char *);
422: int mt_load(char *);
423: void sortbynm(Q *,int);
424: void iqrv(VECT,Q,LIST *);
425: void igcdv(VECT,Q *);
426: void igcdv_estimate(VECT,Q *);
427: void cpp_main(int,char **);
428: int afternl(void);
429: void glob_init();
430: void input_init(FILE *,char *);
431: void asir_terminate(int);
432: void param_init(void);
433: void sprompt(char *);
434: void process_args(int,char **);
435: void sig_init(void);
436: void asir_save_handler(void);
437: void asir_set_handler(void);
438: void asir_reset_handler(void);
439: void resetenv(char *);
440: void fatal(int);
441: void restore_handler(void);
442: void resize_buffer(void);
443: void tty_init(void);
444: void tty_reset(void);
445: void set_timer(int);
446: void reset_timer(void);
447: void int_handler(int);
448: void int_handler(int);
449: void segv_handler(int);
450: void bus_handler(int);
451: void fpe_handler(int);
452: void ill_handler(int);
453: void winch_handler(int);
454: void pipe_handler(int);
455: void usr1_handler(int);
456: void alrm_handler(int);
457: void copyright(void);
458: void kan_init(void);
459: void pushpvs(FUNC);
460: void read_eval_loop(void);
461: void prompt(void);
462: void storeans(pointer);
463: int yyparse(void);
464: void nodetod(NODE,DP *);
465: void poppvs(void);
466: int length(NODE);
467: int get_heapsize(void);
468: int searchpvar(char *);
469: void mkparif(char *,FUNC *);
470: void makevar(char *,P *);
471: void mkpvs(void);
472: void stoarg(char *,int *,char **);
473: void yyerror(char *);
474: void closecurrentinput(void);
475: void asir_terminate(int);
476: void searchasirpath(char *,char **);
477: void get_vars(Obj,VL *);
478: void appendbinf(NODE *,char *,void(*)(),int);
479: void appendubinf(char *,void(*)(),int);
480: void parif_init(void);
481: void sysf_init(void);
482: void makesrvar(FUNC, P *);
483: void sprintexpr(VL,Obj);
484: void printexpr(VL,Obj);
485: void appendvar(VL,V);
486: void change_mvar(VL,P,V,P *);
487: void restore_mvar(VL,P,V,P *);
488: int argc(NODE);
489: void printn(N);
490: void sprintn(N);
491: void printv(VL,V);
492: void sprintv(VL,V);
493: int arf_comp(VL, Obj, Obj);
494: int complist(VL, LIST, LIST);
495: int complist(VL, LIST, LIST);
496: int getcompsize(int);
497: int getpvar(VS,char *,int);
498: int getpvar(VS,char *,int);
499: int gettype(unsigned int);
500: int indextotype(int,int);
501: int loadfile(char *);
502: int loadfiles(NODE);
503: int makepvar(char *);
504: int membertoindex(int,char *);
505: int qcoefp(Obj);
506: int qcoefr(Obj);
507: int rangecheck(Obj,int);
508: int structtoindex(char *);
509: pointer eval(FNODE);
510: pointer evalf(FUNC,FNODE,FNODE);
511: pointer evalif(FNODE,FNODE);
512: pointer evalnode(NODE node);
513: pointer evalpf(PF,NODE);
514: pointer evalparif(FUNC,NODE);
515: pointer evalpv(int,FNODE,pointer);
516: pointer evalstat(SNODE f);
517: void _mkpfins(PF ,Obj *,V *);
518: void appendpfins(V ,V *);
519: void appenduf(char *,FUNC *);
520: void arf_add(VL, Obj, Obj, Obj *);
521: void arf_chsgn(Obj, Obj *);
522: void arf_div(VL, Obj, Obj, Obj *);
523: void arf_init(void);
524: void arf_mul(VL, Obj, Obj, Obj *);
525: void arf_pwr(VL, Obj, Obj, Obj *);
526: void arf_remain(VL, Obj, Obj, Obj *);
527: void arf_sub(VL, Obj, Obj, Obj *);
528: void bp(SNODE);
529: void clearbp(FUNC);
530: void debug(SNODE);
531: void debug_init(void);
532: void delbp(int, char **);
533: void derivr(VL ,Obj ,V ,Obj *);
534: void derivvar(VL ,V ,V ,Obj *);
535: void duppfins(V ,V *);
536: void error(char *);
537: void evalins(PFINS ,int ,Obj *);
538: void evalnodebody(NODE,NODE *);
539: void evalp(VL ,P ,int ,P *);
540: void evalr(VL ,Obj ,int ,Obj *);
541: void evalv(VL ,V ,int ,Obj *);
542: void getarrayp(Obj,NODE,Obj **);
543: void getmember(FNODE,Obj *);
544: void getmemberp(FNODE,Obj **);
545: void help(char *);
546: void instov(PFINS ,V *);
1.5 ! noro 547: Obj memberofstruct(COMP,char *);
1.1 noro 548: void mkpf(char *,Obj ,int ,V *,int (*)(),double (*)(),int (*)(),PF *);
549: void mkpfins(PF ,V *,V *);
550: void mkuf(char *,char *,NODE,SNODE,int,int,char *);
551: void newstruct(int,struct oCOMP **);
552: void optobj(Obj *);
553: void println(int, char **, int);
554: void printvars(char *,VS);
555: void resetpvs(void);
556: void searchc(char *,FUNC *);
557: void searchf(NODE,char *,FUNC *);
558: void searchpf(char *,FUNC *);
559: void searchsn(SNODE *, int, SNODE **);
560: void setbp(char *);
561: void setf(int, char **);
562: void setstruct(char *,NODE);
563: void showbp(int);
564: void showbps(void);
565: void showpos(void);
566: void simplify_ins(PFINS ,Obj *);
567: void sprintvars(char *,VS);
1.5 ! noro 568: int structdef(char *,NODE);
1.1 noro 569: void substfp(VL ,Obj ,PF ,PF ,Obj *);
570: void substfr(VL ,Obj ,PF ,PF ,Obj *);
571: void substfv(VL ,V ,PF ,PF ,Obj *);
572: void substpr(VL ,int ,Obj ,V ,Obj ,Obj *);
573: void substr(VL ,int ,Obj ,V ,Obj ,Obj *);
574: void appendtonode(NODE,pointer, NODE *);
575: void getarray(pointer,NODE,pointer *);
576: void putarray(pointer,NODE,pointer);
577:
578: void addcomp(VL,COMP,COMP,COMP *);
579: void subcomp(VL,COMP,COMP,COMP *);
580: void mulcomp(VL,COMP,COMP,COMP *);
581: void divcomp(VL,COMP,COMP,COMP *);
582: void chsgncomp(COMP,COMP *);
583: void pwrcomp(VL,COMP,Obj,COMP *);
584: int compcomp(VL,COMP,COMP);
585: #else
586: int arf_comp();
587: int complist();
588: int complist();
589: int getcompsize();
590: int getpvar();
591: int getpvar();
592: int gettype();
593: int indextotype();
594: int loadfile();
595: int loadfiles();
596: int makepvar();
597: int membertoindex();
598: int qcoefp();
599: int qcoefr();
600: int rangecheck();
601: int structtoindex();
602: pointer eval();
603: pointer evalf();
604: pointer evalif();
605: pointer evalnode();
606: pointer evalpf();
607: pointer evalparif();
608: pointer evalpv();
609: pointer evalstat();
610: void _mkpfins();
611: void appendpfins();
612: void appenduf();
613: void arf_add();
614: void arf_chsgn();
615: void arf_div();
616: void arf_init();
617: void arf_mul();
618: void arf_pwr();
619: void arf_remain();
620: void arf_sub();
621: void bp();
622: void clearbp();
623: void debug();
624: void debug_init();
625: void delbp();
626: void derivr();
627: void derivvar();
628: void duppfins();
629: void error();
630: void evalins();
631: void evalnodebody();
632: void evalp();
633: void evalr();
634: void evalv();
635: void getarrayp();
636: void getmember();
637: void getmemberp();
638: void help();
639: void instov();
1.5 ! noro 640: Obj memberofstruct();
1.1 noro 641: void mkpf();
642: void mkpfins();
643: void mkuf();
644: void newstruct();
645: void optobj();
646: void println();
647: void printvars();
648: void resetpvs();
649: void searchc();
650: void searchf();
651: void searchpf();
652: void searchsn();
653: void setbp();
654: void setf();
655: void setstruct();
656: void showbp();
657: void showbps();
658: void showpos();
659: void simplify_ins();
660: void sprintvars();
1.5 ! noro 661: int structdef();
1.1 noro 662: void substfp();
663: void substfr();
664: void substfv();
665: void substpr();
666: void substr();
667: void appendtonode();
668: void getarray();
669: void putarray();
670:
671: void addcomp();
672: void subcomp();
673: void mulcomp();
674: void divcomp();
675: void chsgncomp();
676: void pwrcomp();
677: int compcomp();
678: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>