=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/cpexpr.c,v retrieving revision 1.24 retrieving revision 1.27 diff -u -p -r1.24 -r1.27 --- OpenXM_contrib2/asir2000/io/cpexpr.c 2004/12/10 07:36:35 1.24 +++ OpenXM_contrib2/asir2000/io/cpexpr.c 2015/08/04 06:20:45 1.27 @@ -44,15 +44,12 @@ * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. - * $OpenXM: OpenXM_contrib2/asir2000/io/cpexpr.c,v 1.23 2004/07/13 07:59:54 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/cpexpr.c,v 1.26 2006/08/27 22:17:28 noro Exp $ */ #include "ca.h" #include "parse.h" #include "al.h" #include "base.h" -#if PARI -#include "genpari.h" -#endif #ifndef CPRINT #define CPRINT @@ -90,6 +87,7 @@ static int total_length; #define PRINTRANGE length_RANGE #define PRINTTB length_TB #define PRINTDPV length_DPV +#define PRINTNBP length_nbp #define PRINTERR length_err #define PRINTLF length_lf #define PRINTLOP length_lop @@ -116,22 +114,18 @@ int estimate_length(VL vl,pointer p) return total_length; } -#if defined(PARI) void PRINTBF(BF a) { char *str; - char *GENtostr0(); - void myoutbrute(); + int dprec; + char fbuf[BUFSIZ]; - if ( double_output ) { - str = GENtostr0(a->body,myoutbrute); - } else { - str = GENtostr(a->body); - } + dprec = a->body->_mpfr_prec*0.30103; + sprintf(fbuf,"%%.%dR%c",dprec,double_output?'f':'g'); + mpfr_asprintf(&str,fbuf,a->body); total_length += strlen(str); - free(str); + mpfr_free_str(str); } -#endif void PRINTNUM(Num q) { @@ -161,10 +155,8 @@ void PRINTNUM(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 case N_C: PRINTCPLX((C)q); break; case N_M: @@ -477,6 +469,30 @@ void PRINTUM(UM n) } } PUTS(")"); + } +} + +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); + PRINTEXPR(vl,(Obj)m->c); + 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("+"); + } } }