aboutsummaryrefslogtreecommitdiffstats
path: root/awkgram.c
diff options
context:
space:
mode:
authorjohn haque <j.eh@mchsi.com>2012-02-19 08:44:00 -0600
committerjohn haque <j.eh@mchsi.com>2012-02-19 08:44:00 -0600
commitcb17a712ea65f6510e0000374cce4efbf4ffb902 (patch)
tree3b82a95607edb6adba2bbd49934851c6547d7703 /awkgram.c
parent0221eb79f43f4ef5c8d74759679a501607936d19 (diff)
downloadegawk-cb17a712ea65f6510e0000374cce4efbf4ffb902.tar.gz
egawk-cb17a712ea65f6510e0000374cce4efbf4ffb902.tar.bz2
egawk-cb17a712ea65f6510e0000374cce4efbf4ffb902.zip
Finish builtins for MPFR.
Diffstat (limited to 'awkgram.c')
-rw-r--r--awkgram.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/awkgram.c b/awkgram.c
index edf99320..d9f97bc4 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -6578,21 +6578,29 @@ parms_shadow(INSTRUCTION *pc, int *shadow)
void
valinfo(NODE *n, Func_print print_func, FILE *fp)
{
- /* FIXME -- MPFR */
-
if (n == Nnull_string)
print_func(fp, "uninitialized scalar\n");
else if (n->flags & STRING) {
pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', FALSE);
print_func(fp, "\n");
- } else if (n->flags & NUMBER)
+ } else if (n->flags & NUMBER) {
+#ifdef HAVE_MPFR
+ if (n->flags & MPFN)
+ print_func(fp, "%s\n", mpfr_fmt("%.17R*g", RND_MODE, n->mpfr_numbr));
+ else
+#endif
print_func(fp, "%.17g\n", n->numbr);
- else if (n->flags & STRCUR) {
+ } else if (n->flags & STRCUR) {
pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', FALSE);
print_func(fp, "\n");
- } else if (n->flags & NUMCUR)
+ } else if (n->flags & NUMCUR) {
+#ifdef HAVE_MPFR
+ if (n->flags & MPFN)
+ print_func(fp, "%s\n", mpfr_fmt("%.17R*g", RND_MODE, n->mpfr_numbr));
+ else
+#endif
print_func(fp, "%.17g\n", n->numbr);
- else
+ } else
print_func(fp, "?? flags %s\n", flags2str(n->flags));
}