Annotation of OpenXM_contrib2/asir2000/io/pexpr.c, Revision 1.37
1.3 noro 1: /*
2: * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED
3: * All rights reserved.
4: *
5: * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited,
6: * non-exclusive and royalty-free license to use, copy, modify and
7: * redistribute, solely for non-commercial and non-profit purposes, the
8: * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and
9: * conditions of this Agreement. For the avoidance of doubt, you acquire
10: * only a limited right to use the SOFTWARE hereunder, and FLL or any
11: * third party developer retains all rights, including but not limited to
12: * copyrights, in and to the SOFTWARE.
13: *
14: * (1) FLL does not grant you a license in any way for commercial
15: * purposes. You may use the SOFTWARE only for non-commercial and
16: * non-profit purposes only, such as academic, research and internal
17: * business use.
18: * (2) The SOFTWARE is protected by the Copyright Law of Japan and
19: * international copyright treaties. If you make copies of the SOFTWARE,
20: * with or without modification, as permitted hereunder, you shall affix
21: * to all such copies of the SOFTWARE the above copyright notice.
22: * (3) An explicit reference to this SOFTWARE and its copyright owner
23: * shall be made on your publication or presentation in any form of the
24: * results obtained by use of the SOFTWARE.
25: * (4) In the event that you modify the SOFTWARE, you shall notify FLL by
1.4 noro 26: * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification
1.3 noro 27: * for such modification or the source code of the modified part of the
28: * SOFTWARE.
29: *
30: * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL
31: * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND
32: * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS
33: * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES'
34: * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY
35: * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY.
36: * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT,
37: * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
38: * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
39: * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES
40: * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES
41: * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY
42: * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
43: * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART
44: * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
45: * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
46: * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
1.37 ! noro 47: * $OpenXM: OpenXM_contrib2/asir2000/io/pexpr.c,v 1.36 2004/05/14 06:02:54 noro Exp $
1.3 noro 48: */
1.1 noro 49: #include "ca.h"
50: #include "al.h"
51: #include "parse.h"
52: #include "comp.h"
53: #include "base.h"
54:
1.35 noro 55: #ifndef FPRINT
56: #define FPRINT
57: #endif
58:
1.27 noro 59: #if defined(PARI)
60: #include "genpari.h"
61: #endif
62:
1.23 saito 63: extern int outputstyle;
1.1 noro 64:
65: FILE *asir_out;
66: #define OUT asir_out
67: char DFORMAT[BUFSIZ];
1.2 noro 68: int hex_output;
69: int fortran_output;
1.6 noro 70: int double_output;
1.10 noro 71: int real_digit;
1.25 noro 72: int real_binary;
1.14 noro 73: int print_quote;
1.35 noro 74: int hideargs;
1.31 noro 75: extern int asir_texmacs;
1.35 noro 76: extern FUNC user_print_function;
77: #if 0
78: int printmode = PRINTF_E;
79: #else
80: int printmode = PRINTF_G;
81: #endif
82:
83: #define DATA_BEGIN 2
84: #define DATA_END 5
1.1 noro 85:
86: #define TAIL
87: #define PUTS(s) fputs(s,OUT)
88: #define PRINTF fprintf
89: #define PRINTN printn
90: #define PRINTBF printbf
91: #define PRINTCPLX printcplx
92: #define PRINTLM printlm
93: #define PRINTUP2 printup2
94: #define PRINTV printv
95: #define PRINTEXPR printexpr
96: #define PRINTNUM printnum
1.20 noro 97: #define PRINTP asir_printp
1.1 noro 98: #define PRINTR printr
99: #define PRINTLIST printlist
100: #define PRINTVECT printvect
101: #define PRINTMAT printmat
102: #define PRINTSTR printstr
103: #define PRINTCOMP printcomp
104: #define PRINTDP printdp
105: #define PRINTUI printui
106: #define PRINTGF2MAT printgf2mat
107: #define PRINTGFMMAT printgfmmat
1.5 noro 108: #define PRINTBYTEARRAY printbytearray
1.13 noro 109: #define PRINTQUOTE printquote
1.37 ! noro 110: #define PRINTQUOTEARG printquotearg
1.1 noro 111: #define PRINTERR printerr
112: #define PRINTLF printlf
113: #define PRINTLOP printlop
114: #define PRINTFOP printfop
115: #define PRINTEOP printeop
116: #define PRINTQOP printqop
117: #define PRINTUP printup
1.16 noro 118: #define PRINTUM printum
119: #define PRINTSF printsf
1.28 noro 120: #define PRINTSYMBOL printsymbol
1.29 noro 121: #define PRINTRANGE printrange
1.32 noro 122: #define PRINTTB printtb
1.36 noro 123: #define PRINTDPV printdpv
1.33 noro 124: #define PRINTFNODE printfnode
125: #define PRINTFNODENODE printfnodenode
126: #define PRINTFARGS printfargs
1.1 noro 127:
1.35 noro 128: #include "pexpr_body.c"
1.1 noro 129:
1.35 noro 130: /* spetial functions for file output */
1.1 noro 131:
132: void output_init() {
133: OUT = stdout;
134: sprintf(DFORMAT,"%%0%dd",DLENGTH);
135: }
136:
137: int mmono(p)
138: P p;
139: {
140: if ( NUM(p) )
1.9 saito 141: #if defined(INTERVAL)
1.18 kondoh 142: if ( NID(p) != N_IP && NID(p) != N_IntervalDouble && NID(p) != N_IntervalQuad && NID(p) != N_IntervalBigFloat
1.9 saito 143: && compnum(CO,(Num)p,0) < 0 )
144: #else
1.1 noro 145: if ( compnum(CO,(Num)p,0) < 0 )
1.9 saito 146: #endif
1.1 noro 147: return ( 1 );
148: else
149: return ( 0 );
150: else if ( NEXT(DC(p)) )
151: return ( 0 );
152: else
153: return (mmono(COEF(DC(p))));
154: }
155:
1.21 ohara 156: #if defined(PARI)
1.1 noro 157: void printbf(a)
158: BF a;
159: {
1.8 noro 160: sor(a->body,double_output ? 'f' : 'g',-1,0);
1.1 noro 161: }
162: #endif
163:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>