Annotation of OpenXM_contrib2/asir2000/io/pexpr.c, Revision 1.45
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.45 ! kondoh 47: * $OpenXM: OpenXM_contrib2/asir2000/io/pexpr.c,v 1.44 2018/03/29 07:50:06 ohara 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.23 saito 59: extern int outputstyle;
1.1 noro 60:
61: FILE *asir_out;
62: #define OUT asir_out
63: char DFORMAT[BUFSIZ];
1.2 noro 64: int hex_output;
65: int fortran_output;
1.6 noro 66: int double_output;
1.10 noro 67: int real_digit;
1.25 noro 68: int real_binary;
1.14 noro 69: int print_quote;
1.35 noro 70: int hideargs;
71: extern FUNC user_print_function;
72: #if 0
73: int printmode = PRINTF_E;
74: #else
75: int printmode = PRINTF_G;
76: #endif
77:
78: #define DATA_BEGIN 2
79: #define DATA_END 5
1.1 noro 80:
81: #define TAIL
82: #define PUTS(s) fputs(s,OUT)
83: #define PRINTF fprintf
84: #define PRINTN printn
85: #define PRINTBF printbf
86: #define PRINTCPLX printcplx
87: #define PRINTLM printlm
88: #define PRINTUP2 printup2
89: #define PRINTV printv
90: #define PRINTEXPR printexpr
91: #define PRINTNUM printnum
1.20 noro 92: #define PRINTP asir_printp
1.1 noro 93: #define PRINTR printr
94: #define PRINTLIST printlist
95: #define PRINTVECT printvect
96: #define PRINTMAT printmat
97: #define PRINTSTR printstr
98: #define PRINTCOMP printcomp
99: #define PRINTDP printdp
1.42 noro 100: #define PRINTDPM printdpm
1.1 noro 101: #define PRINTUI printui
102: #define PRINTGF2MAT printgf2mat
103: #define PRINTGFMMAT printgfmmat
1.5 noro 104: #define PRINTBYTEARRAY printbytearray
1.13 noro 105: #define PRINTQUOTE printquote
1.37 noro 106: #define PRINTQUOTEARG printquotearg
1.39 noro 107: #define PRINTNBP printnbp
1.1 noro 108: #define PRINTERR printerr
109: #define PRINTLF printlf
110: #define PRINTLOP printlop
111: #define PRINTFOP printfop
112: #define PRINTEOP printeop
113: #define PRINTQOP printqop
114: #define PRINTUP printup
1.16 noro 115: #define PRINTUM printum
116: #define PRINTSF printsf
1.28 noro 117: #define PRINTSYMBOL printsymbol
1.29 noro 118: #define PRINTRANGE printrange
1.32 noro 119: #define PRINTTB printtb
1.36 noro 120: #define PRINTDPV printdpv
1.33 noro 121: #define PRINTFNODE printfnode
122: #define PRINTFNODENODE printfnodenode
123: #define PRINTFARGS printfargs
1.1 noro 124:
1.45 ! kondoh 125: #if defined(INTERVAL)
! 126: #define PRINTBF4ITV printbf4itv
! 127: #endif
! 128:
1.35 noro 129: #include "pexpr_body.c"
1.1 noro 130:
1.35 noro 131: /* spetial functions for file output */
1.1 noro 132:
133: void output_init() {
1.43 noro 134: OUT = stdout;
135: sprintf(DFORMAT,"%%0%dd",DLENGTH);
1.1 noro 136: }
137:
138: int mmono(p)
139: P p;
140: {
1.43 noro 141: if ( NUM(p) )
1.9 saito 142: #if defined(INTERVAL)
1.43 noro 143: if ( NID(p) != N_IP && NID(p) != N_IntervalDouble && NID(p) != N_IntervalQuad && NID(p) != N_IntervalBigFloat
144: && compnum(CO,(Num)p,0) < 0 )
1.9 saito 145: #else
1.43 noro 146: if ( compnum(CO,(Num)p,0) < 0 )
1.9 saito 147: #endif
1.43 noro 148: return ( 1 );
149: else
150: return ( 0 );
151: else if ( NEXT(DC(p)) )
152: return ( 0 );
153: else
154: return (mmono(COEF(DC(p))));
1.1 noro 155: }
156:
1.40 noro 157: void printbf(BF a)
1.1 noro 158: {
1.43 noro 159: int dprec;
160: char fbuf[BUFSIZ];
161: char *s;
162: dprec = (a->body->_mpfr_prec)*0.30103;
1.40 noro 163: if ( !dprec ) dprec = 1;
1.44 ohara 164: sprintf(fbuf,"%%.%dR%c",dprec,(double_output==1)?'f':(double_output==2)?'e':'g');
1.43 noro 165: mpfr_asprintf(&s,fbuf,a->body);
166: TAIL PUTS(s);
167: mpfr_free_str(s);
1.1 noro 168: }
169:
1.45 ! kondoh 170: #if defined(INTERVAL)
! 171: void printbf4itv(BF a)
! 172: {
! 173: int dprec;
! 174: char fbuf[BUFSIZ];
! 175: char *s;
! 176: dprec = (a->body->_mpfr_prec)*0.30103;
! 177: if ( !dprec ) dprec = 1;
! 178: dprec += 1;
! 179: sprintf(fbuf,"%%.%dR%c",dprec,(double_output==1)?'f':(double_output==2)?'e':'g');
! 180: mpfr_asprintf(&s,fbuf,a->body);
! 181: TAIL PUTS(s);
! 182: mpfr_free_str(s);
! 183: }
! 184: #endif
! 185:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>