=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/pexpr.c,v retrieving revision 1.38 retrieving revision 1.46 diff -u -p -r1.38 -r1.46 --- OpenXM_contrib2/asir2000/io/pexpr.c 2004/12/17 03:09:08 1.38 +++ OpenXM_contrib2/asir2000/io/pexpr.c 2019/12/24 10:26:38 1.46 @@ -44,7 +44,7 @@ * 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/pexpr.c,v 1.37 2004/07/13 07:59:54 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/pexpr.c,v 1.45 2019/11/12 10:52:04 kondoh Exp $ */ #include "ca.h" #include "al.h" @@ -56,10 +56,6 @@ #define FPRINT #endif -#if defined(PARI) -#include "genpari.h" -#endif - extern int outputstyle; FILE *asir_out; @@ -101,12 +97,14 @@ int printmode = PRINTF_G; #define PRINTSTR printstr #define PRINTCOMP printcomp #define PRINTDP printdp +#define PRINTDPM printdpm #define PRINTUI printui #define PRINTGF2MAT printgf2mat #define PRINTGFMMAT printgfmmat #define PRINTBYTEARRAY printbytearray #define PRINTQUOTE printquote #define PRINTQUOTEARG printquotearg +#define PRINTNBP printnbp #define PRINTERR printerr #define PRINTLF printlf #define PRINTLOP printlop @@ -124,39 +122,68 @@ int printmode = PRINTF_G; #define PRINTFNODENODE printfnodenode #define PRINTFARGS printfargs +#if defined(INTERVAL) +#define PRINTBF4ITV printbf4itv +#endif + #include "pexpr_body.c" /* spetial functions for file output */ void output_init() { - OUT = stdout; - sprintf(DFORMAT,"%%0%dd",DLENGTH); + OUT = stdout; + sprintf(DFORMAT,"%%0%dd",DLENGTH); } int mmono(p) P p; { - if ( NUM(p) ) + if ( NUM(p) ) #if defined(INTERVAL) - if ( NID(p) != N_IP && NID(p) != N_IntervalDouble && NID(p) != N_IntervalQuad && NID(p) != N_IntervalBigFloat - && compnum(CO,(Num)p,0) < 0 ) + if ( NID(p) != N_IP && NID(p) != N_IntervalDouble && NID(p) != N_IntervalQuad && NID(p) != N_IntervalBigFloat + && compnum(CO,(Num)p,0) < 0 ) #else - if ( compnum(CO,(Num)p,0) < 0 ) + if ( compnum(CO,(Num)p,0) < 0 ) #endif - return ( 1 ); - else - return ( 0 ); - else if ( NEXT(DC(p)) ) - return ( 0 ); - else - return (mmono(COEF(DC(p)))); + return ( 1 ); + else + return ( 0 ); + else if ( NEXT(DC(p)) ) + return ( 0 ); + else + return (mmono(COEF(DC(p)))); } -#if defined(PARI) -void printbf(a) -BF a; +void printbf(BF a) { - sor(a->body,double_output ? 'f' : 'g',-1,0); + int dprec; + char fbuf[BUFSIZ]; + char *s; + dprec = (a->body->_mpfr_prec)*0.30103; + if ( !dprec ) dprec = 1; + sprintf(fbuf,"%%.%dR%c",dprec,(double_output==1)?'f':(double_output==2)?'e':'g'); + mpfr_asprintf(&s,fbuf,a->body); + TAIL PUTS(s); + mpfr_free_str(s); +} + +#if defined(INTERVAL) +void printbf4itv(BF a) +{ + int dprec; + char fbuf[BUFSIZ]; + char *s; + if ( !a ) { + TAIL PUTS("0"); + } else { + dprec = (a->body->_mpfr_prec)*0.30103; + if ( !dprec ) dprec = 1; + dprec += 1; + sprintf(fbuf,"%%.%dR%c",dprec,(double_output==1)?'f':(double_output==2)?'e':'g'); + mpfr_asprintf(&s,fbuf,a->body); + TAIL PUTS(s); + mpfr_free_str(s); + } } #endif