=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/pexpr_body.c,v retrieving revision 1.9 retrieving revision 1.20 diff -u -p -r1.9 -r1.20 --- OpenXM_contrib2/asir2000/io/pexpr_body.c 2005/09/28 08:08:34 1.9 +++ OpenXM_contrib2/asir2000/io/pexpr_body.c 2017/08/31 02:36:21 1.20 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/io/pexpr_body.c,v 1.8 2005/01/17 07:43:24 saito Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/io/pexpr_body.c,v 1.19 2016/06/29 08:16:11 ohara Exp $ */ #define PRINTHAT (fortran_output?PUTS("**"):PUTS("^")) @@ -15,12 +15,14 @@ void PRINTIMAT(); /* IMAT */ void PRINTSTR(); void PRINTCOMP(); void PRINTDP(); +void PRINTDPM(); void PRINTUI(); void PRINTGF2MAT(); void PRINTGFMMAT(); void PRINTBYTEARRAY(); void PRINTQUOTE(); void PRINTQUOTEARG(); +void PRINTNBP(); void PRINTERR(); void PRINTCPLX(); void PRINTLM(); @@ -71,6 +73,8 @@ Obj p; PRINTCOMP(vl,(COMP)p); break; case O_DP: PRINTDP(vl,(DP)p); break; + case O_DPM: + PRINTDPM(vl,(DPM)p); break; case O_USINT: PRINTUI(vl,(USINT)p); break; case O_GF2MAT: @@ -89,6 +93,8 @@ Obj p; PRINTQUOTE(vl,(QUOTE)p); break; case O_QUOTEARG: PRINTQUOTEARG(vl,(QUOTEARG)p); break; + case O_NBP: + PRINTNBP(vl,(NBP)p); break; case O_SYMBOL: PRINTSYMBOL((SYMBOL)p); break; case O_RANGE: @@ -613,7 +619,7 @@ void PRINTFNODE(FNODE f,int paren) /* lists */ case I_LIST: PUTS("["); PRINTFNODENODE((NODE)FA0(f)); PUTS("]"); break; /* function */ - case I_FUNC: + case I_FUNC: case I_FUNC_QARG: if ( !strcmp(((FUNC)FA0(f))->name,"@pi") ) PUTS("@pi"); else if ( !strcmp(((FUNC)FA0(f))->name,"@e") ) PUTS("@e"); else { @@ -686,7 +692,7 @@ Num q; int i,expo; m = (unsigned int *)&BDY((Real)q); -#if defined(__i386__) || defined(MIPSEL) || defined(VISUAL) || defined(__alpha) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__x86_64) +#if defined(__i386__) || defined(MIPSEL) || defined(VISUAL) || defined(__MINGW32__) || defined(__alpha) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__x86_64) || defined(__ARM_ARCH) || defined(ANDROID) u = m[1]; l = m[0]; #else u = m[0]; l = m[1]; @@ -762,10 +768,8 @@ Num q; case N_A: PUTS("("); PRINTR(ALG,(R)BDY((Alg)q)); PUTS(")"); break; -#if defined(PARI) case N_B: PRINTBF((BF)q); break; -#endif #if defined(INTERVAL) case N_IP: case N_IntervalBigFloat: @@ -887,6 +891,12 @@ Num q; PRINTN(NM(dn)); } break; + case N_GZ: + mpz_out_str(OUT,10,BDY((GZ)q)); + break; + case N_GQ: + mpq_out_str(OUT,10,BDY((GQ)q)); + break; } } @@ -1008,6 +1018,26 @@ DP d; } } +void PRINTDPM(vl,d) +VL vl; +DPM d; +{ + int n,i; + DMM m; + DL dl; + + for ( n = d->nv, m = BDY(d); m; m = NEXT(m) ) { + PUTS("("); PRINTEXPR(vl,(pointer)m->c); PUTS(")*<<"); + for ( i = 0, dl = m->dl; i < n-1; i++ ) { + TAIL PRINTF(OUT,"%d,",dl->d[i]); + } + TAIL PRINTF(OUT,"%d:%d",dl->d[i],m->pos); + PUTS(">>"); + if ( NEXT(m) ) + PUTS("+"); + } +} + void PRINTUI(vl,u) VL vl; USINT u; @@ -1072,6 +1102,32 @@ VL vl; QUOTEARG quote; { PUTS("<...quoted...>"); +} + +void PRINTNBP(VL vl,NBP p) +{ + NODE t; + NBM m; + int d,i; + unsigned int *b; + if ( !p ) PUTS("0"); + else { + for ( t = BDY(p); t; t = NEXT(t) ) { + m = (NBM)BDY(t); + PUTS("("); + PRINTEXPR(vl,(Obj)m->c); + PUTS(")*"); + d = m->d; + b = m->b; + if ( d ) + for ( i = 0; i < d; i++ ) { + if ( NBM_GET(b,i) ) PUTS("x"); + else PUTS("y"); + } + else PUTS("1"); + if ( NEXT(t) ) PUTS("+"); + } + } } void PRINTTB(VL vl,TB p)