[BACK]Return to parse.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

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>