version 1.13, 2001/04/20 02:34:23 |
version 1.15, 2001/08/28 05:46:26 |
|
|
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* $OpenXM: OpenXM_contrib2/asir2000/io/spexpr.c,v 1.12 2001/03/15 05:52:12 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/spexpr.c,v 1.14 2001/08/06 01:48:33 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "al.h" |
#include "al.h" |
|
|
char DFORMAT[BUFSIZ]; |
char DFORMAT[BUFSIZ]; |
int hex_output; |
int hex_output; |
int fortran_output; |
int fortran_output; |
|
int double_output; |
|
int real_digit; |
|
int print_quote; |
|
|
#define TAIL |
#define TAIL |
#define PUTS(s) fputs(s,OUT) |
#define PUTS(s) fputs(s,OUT) |
Line 106 extern int hex_output; |
|
Line 109 extern int hex_output; |
|
extern int fortran_output; |
extern int fortran_output; |
extern int double_output; |
extern int double_output; |
extern int real_digit; |
extern int real_digit; |
|
extern int print_quote; |
|
|
#define TAIL while ( *OUT ) OUT++; |
#define TAIL while ( *OUT ) OUT++; |
#define PUTS(s) strcat(OUT,s) |
#define PUTS(s) strcat(OUT,s) |
|
|
{ |
{ |
if ( NUM(p) ) |
if ( NUM(p) ) |
#if defined(INTERVAL) |
#if defined(INTERVAL) |
if ( NID(p) != N_IP && compnum(CO,(Num)p,0) < 0 ) |
if ( NID(p) != N_IP && NID(p) != N_ID && NID(p) != N_IT && NID(p) != N_IF |
|
&& compnum(CO,(Num)p,0) < 0 ) |
#else |
#else |
if ( compnum(CO,(Num)p,0) < 0 ) |
if ( compnum(CO,(Num)p,0) < 0 ) |
#endif |
#endif |
|
|
} |
} |
} |
} |
|
|
extern int printmode; |
#if defined(FPRINT) |
|
#if defined(ITVDEBUG) |
|
void printbin(double z) |
|
{ |
|
int i, j, mask; |
|
union { |
|
double x; |
|
char c[8]; |
|
} a; |
|
|
|
a.x = z; |
|
for(i=7;i>=0;i--) { |
|
mask = 0x80; |
|
for(j=0;j<8;j++) { |
|
if (a.c[i] & mask) fprintf(stderr,"1"); |
|
else fprintf(stderr,"0"); |
|
mask >>= 1; |
|
} |
|
} |
|
fprintf(stderr,"\n"); |
|
} |
|
#endif |
|
#endif |
|
|
|
#if defined(FPRINT) |
|
#if 0 |
|
int printmode = PRINTF_E; |
|
#else |
|
int printmode = PRINTF_G; |
|
#endif |
|
#else |
|
extern int printmode; |
|
#endif |
|
|
void PRINTNUM(q) |
void PRINTNUM(q) |
Num q; |
Num q; |
{ |
{ |
|
|
#if defined(INTERVAL) |
#if defined(INTERVAL) |
case MID_PRINTF_E: |
case MID_PRINTF_E: |
#endif |
#endif |
TAIL PRINTF(OUT,"%.15e",BDY((Real)q)); |
TAIL PRINTF(OUT,"%.16e",BDY((Real)q)); |
break; |
break; |
case PRINTF_G: |
case PRINTF_G: |
#if defined(INTERVAL) |
#if defined(INTERVAL) |
case MID_PRINTF_G: |
case MID_PRINTF_G: |
#endif |
#endif |
default: |
default: |
if ( real_digit ) { |
if ( real_digit ) { |
sprintf(real_format, |
sprintf(real_format, |
double_output?"%%.%df":"%%.%dg",real_digit); |
double_output?"%%.%df":"%%.%dg",real_digit); |
TAIL PRINTF(OUT,real_format,BDY((Real)q)); |
TAIL PRINTF(OUT,real_format,BDY((Real)q)); |
} else { |
} else { |
TAIL PRINTF(OUT,double_output?"%f":"%g",BDY((Real)q)); |
TAIL PRINTF(OUT,double_output?"%f":"%g",BDY((Real)q)); |
} |
} |
break; |
break; |
} |
} |
break; |
break; |
case N_A: |
case N_A: |
|
|
PRINTUP((UP)(((GFPN)q)->body)); |
PRINTUP((UP)(((GFPN)q)->body)); |
break; |
break; |
case N_GFS: |
case N_GFS: |
TAIL PRINTF(OUT,"@_%d",CONT((GFS)q)); break; |
TAIL PRINTF(OUT,"@_%d",CONT((GFS)q)); |
|
break; |
} |
} |
} |
} |
|
|
|
|
if ( a->r ) |
if ( a->r ) |
PRINTNUM(a->r); |
PRINTNUM(a->r); |
if ( a->i ) { |
if ( a->i ) { |
|
#if defined(INTERVAL) |
|
if ( a->r && ((compnum(0,a->i,0) > 0) |
|
|| NID(a->i) == N_IP || NID(a->i) == N_ID |
|
|| NID(a->i) == N_IT || NID(a->i) == N_IF) ) |
|
#else |
if ( a->r && (compnum(0,a->i,0) > 0) ) |
if ( a->r && (compnum(0,a->i,0) > 0) ) |
|
#endif |
PUTS("+"); |
PUTS("+"); |
PRINTNUM(a->i); PUTS("*@i"); |
PRINTNUM(a->i); PUTS("*@i"); |
} |
} |
Line 722 void PRINTQUOTE(vl,quote) |
|
Line 766 void PRINTQUOTE(vl,quote) |
|
VL vl; |
VL vl; |
QUOTE quote; |
QUOTE quote; |
{ |
{ |
PUTS("<...quoted...>"); |
LIST list; |
|
|
|
if ( print_quote ) { |
|
fnodetotree(BDY(quote),&list); |
|
PRINTEXPR(vl,(Obj)list); |
|
} else { |
|
PUTS("<...quoted...>"); |
|
} |
} |
} |
|
|
void PRINTERR(vl,e) |
void PRINTERR(vl,e) |