=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/spexpr.c,v retrieving revision 1.21 retrieving revision 1.25 diff -u -p -r1.21 -r1.25 --- OpenXM_contrib2/asir2000/io/spexpr.c 2003/02/14 22:29:15 1.21 +++ OpenXM_contrib2/asir2000/io/spexpr.c 2003/12/25 02:40:24 1.25 @@ -44,19 +44,23 @@ * 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/spexpr.c,v 1.20 2002/09/11 07:23:27 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/spexpr.c,v 1.24 2003/06/09 16:18:10 saito Exp $ */ #include "ca.h" #include "al.h" #include "parse.h" #include "comp.h" #include "base.h" +#if PARI +#include "genpari.h" +#endif #ifndef SPRINT #define SPRINT #endif #define PRINTHAT (fortran_output?PUTS("**"):PUTS("^")) +extern int outputstyle; #ifdef FPRINT FILE *asir_out; @@ -113,6 +117,7 @@ extern int double_output; extern int real_digit; extern int print_quote; + #define TAIL while ( *OUT ) OUT++; #define PUTS(s) strcat(OUT,s) #define PRINTF sprintf @@ -207,8 +212,6 @@ P p; void printbf(a) BF a; { - void sor(); - sor(a->body,double_output ? 'f' : 'g',-1,0); } #endif @@ -222,8 +225,6 @@ char *s; } #if defined(PARI) -#include "genpari.h" - void myoutbrute(g) GEN g; { @@ -234,7 +235,6 @@ void sprintbf(a) BF a; { char *str; - char *GENtostr(); char *GENtostr0(); if ( double_output ) { @@ -413,30 +413,86 @@ Num q; #if defined(INTERVAL) case N_IP: case N_IntervalBigFloat: - PUTS("["); - PRINTNUM(INF((Itv)q)); - PUTS(","); - PRINTNUM(SUP((Itv)q)); - PUTS("]"); + switch ( outputstyle ) { + case 1: + PUTS("intval("); + PRINTNUM(INF((Itv)q)); + PUTS(","); + PRINTNUM(SUP((Itv)q)); + PUTS(")"); + break; + case 0: + default: + PUTS("["); + PRINTNUM(INF((Itv)q)); + PUTS(","); + PRINTNUM(SUP((Itv)q)); + PUTS("]"); + break; + } break; case N_IntervalDouble: switch (printmode) { case PRINTF_E: - TAIL PRINTF(OUT, "[%.16e,%.16e]",INF((IntervalDouble)q),SUP((IntervalDouble)q)); + switch ( outputstyle ) { + case 1: + TAIL PRINTF(OUT, "intval(%.16e,%.16e)", + INF((IntervalDouble)q),SUP((IntervalDouble)q)); + break; + case 0: + default: + TAIL PRINTF(OUT, "[%.16e,%.16e]", + INF((IntervalDouble)q),SUP((IntervalDouble)q)); + break; + } #if defined(ITVDEBUG) printbin(INF((IntervalDouble)q)); printbin(SUP((IntervalDouble)q)); #endif break; case MID_PRINTF_G: - TAIL PRINTF(OUT, "<%g,%g>", (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,(SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5); + switch ( outputstyle ) { + case 1: + TAIL PRINTF(OUT, "intvalm(%g,%g)", + (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5, + (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5); + break; + case 0: + default: + TAIL PRINTF(OUT, "<%g,%g>", + (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5, + (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5); + break; + } break; case MID_PRINTF_E: - TAIL PRINTF(OUT, "<%.16e,%.16e>", (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,(SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5); + switch ( outputstyle ) { + case 1: + TAIL PRINTF(OUT, "intvalm(%.16e,%.16e)", + (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5, + (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5); + break; + case 0: + default: + TAIL PRINTF(OUT, "<%.16e,%.16e>", + (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5, + (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5); + break; + } break; case PRINTF_G: default: - TAIL PRINTF(OUT, "[%g,%g]",INF((IntervalDouble)q),SUP((IntervalDouble)q)); + switch ( outputstyle ) { + case 1: + TAIL PRINTF(OUT, "intval(%g,%g)", + INF((IntervalDouble)q),SUP((IntervalDouble)q)); + break; + case 0: + default: + TAIL PRINTF(OUT, "[%g,%g]", + INF((IntervalDouble)q),SUP((IntervalDouble)q)); + break; + } break; } break; @@ -619,11 +675,24 @@ VECT vect; int i; pointer *ptr; - PUTS("[ "); - for ( i = 0, ptr = BDY(vect); i < vect->len; i++ ) { - PRINTEXPR(vl,ptr[i]); PUTS(" "); + switch ( outputstyle ) { + case 1: + PUTS("vect("); + for ( i = 0, ptr = BDY(vect); i < vect->len; i++ ) { + if ( i != 0 ) PUTS(","); + PRINTEXPR(vl,ptr[i]); + } + PUTS(")"); + break; + case 0: + default: + PUTS("[ "); + for ( i = 0, ptr = BDY(vect); i < vect->len; i++ ) { + PRINTEXPR(vl,ptr[i]); PUTS(" "); + } + PUTS("]"); + break; } - PUTS("]"); } void PRINTMAT(vl,mat) @@ -633,14 +702,32 @@ MAT mat; int i,j,r,c; pointer *ptr; - for ( i = 0, r = mat->row, c = mat->col; i < r; i++ ) { - PUTS("[ "); - for ( j = 0, ptr = BDY(mat)[i]; j < c; j++ ) { - PRINTEXPR(vl,ptr[j]); PUTS(" "); - } - PUTS("]"); - if ( i < r - 1 ) - PUTS("\n"); + switch ( outputstyle ) { + case 1: + PUTS("mat(\n"); + for ( i = 0, r = mat->row, c = mat->col; i < r; i++ ) { + if ( i != 0 ) PUTS(",\n"); + PUTS("[ "); + for ( j = 0, ptr = BDY(mat)[i]; j < c; j++ ) { + if ( j != 0 ) PUTS(","); + PRINTEXPR(vl,ptr[j]); + } + PUTS(" ]"); + } + PUTS(")"); + break; + case 0: + default: + for ( i = 0, r = mat->row, c = mat->col; i < r; i++ ) { + PUTS("[ "); + for ( j = 0, ptr = BDY(mat)[i]; j < c; j++ ) { + PRINTEXPR(vl,ptr[j]); PUTS(" "); + } + PUTS("]"); + if ( i < r - 1 ) + PUTS("\n"); + } + break; } }