diff options
-rw-r--r-- | awk.h | 8 | ||||
-rw-r--r-- | builtin.c | 12 | ||||
-rw-r--r-- | main.c | 7 | ||||
-rw-r--r-- | mpfr.c | 19 |
4 files changed, 20 insertions, 26 deletions
@@ -1548,7 +1548,7 @@ extern long getenv_long(const char *name); extern void set_PREC(void); extern void set_RNDMODE(void); #ifdef HAVE_MPFR -extern int mpg_cmp(const NODE *t1, const NODE *t2); +extern int mpg_cmp(const NODE *, const NODE *); extern int format_ieee(mpfr_ptr, int); extern NODE *mpg_update_var(NODE *); extern long mpg_set_var(NODE *); @@ -1568,10 +1568,10 @@ extern NODE *do_mpfr_sqrt(int); extern NODE *do_mpfr_srand(int); extern NODE *do_mpfr_strtonum(int); extern NODE *do_mpfr_xor(int); -extern void init_mpfr(const char *); +extern void init_mpfr(mpfr_prec_t, const char *); extern NODE *mpg_node(unsigned int); -extern const char *mpg_fmt(const char *mesg, ...); -extern int mpg_strtoui(mpz_ptr zi, char *str, size_t len, char **end, int base); +extern const char *mpg_fmt(const char *, ...); +extern int mpg_strtoui(mpz_ptr, char *, size_t, char **, int); #endif /* msg.c */ extern void gawk_exit(int status); @@ -1322,7 +1322,9 @@ mpf1: if ((AWKNUM)uval != double_to_int(tmpval)) goto out_of_range; } +#ifdef HAVE_MPFR int0: +#endif /* * When to fill with zeroes is of course not simple. * First: No zero fill if left-justifying. @@ -1437,7 +1439,9 @@ mpf1: fmt1: if (! have_prec) prec = DEFAULT_G_PRECISION; +#ifdef HAVE_MPFR fmt0: +#endif chksize(fw + prec + 11); /* 11 == slop */ cp = cpbuf; *cp++ = '%'; @@ -1458,30 +1462,26 @@ mpf1: #endif switch (fmt_type) { - case MP_INT_WITH_PREC: #ifdef HAVE_MPFR + case MP_INT_WITH_PREC: sprintf(cp, "*.*Z%c", cs1); while ((nc = mpfr_snprintf(obufout, ofre, cpbuf, (int) fw, (int) prec, zi)) >= ofre) chksize(nc) -#endif break; case MP_INT_WITHOUT_PREC: -#ifdef HAVE_MPFR sprintf(cp, "*Z%c", cs1); while ((nc = mpfr_snprintf(obufout, ofre, cpbuf, (int) fw, zi)) >= ofre) chksize(nc) -#endif break; case MP_FLOAT: -#ifdef HAVE_MPFR sprintf(cp, "*.*R*%c", cs1); while ((nc = mpfr_snprintf(obufout, ofre, cpbuf, (int) fw, (int) prec, RND_MODE, mf)) >= ofre) chksize(nc) -#endif break; +#endif default: sprintf(cp, "*.*%c", cs1); while ((nc = snprintf(obufout, ofre, cpbuf, @@ -73,11 +73,6 @@ NODE *TEXTDOMAIN_node; NODE *_r; /* used as temporary in stack macros */ -#ifdef HAVE_MPFR -mpfr_prec_t PRECISION = DEFAULT_PREC; -mpfr_rnd_t RND_MODE = MPFR_RNDN; -#endif - long NF; long NR; long FNR; @@ -577,7 +572,7 @@ out: #ifdef HAVE_MPFR /* Set up MPFR defaults, and register pre-exec hook to process arithmetic opcodes */ if (do_mpfr) - init_mpfr(DEFAULT_RNDMODE); + init_mpfr(DEFAULT_PREC, DEFAULT_RNDMODE); #endif /* load group set */ @@ -37,6 +37,7 @@ mpz_t mpzval; /* GMP integer type, used as temporary in few places */ mpz_t MNR; mpz_t MFNR; int do_ieee_fmt; /* IEEE-754 floating-point emulation */ +mpfr_rnd_t RND_MODE; static mpfr_rnd_t get_rnd_mode(const char rmode); static NODE *mpg_force_number(NODE *n); @@ -78,9 +79,9 @@ static inline mpfr_ptr mpg_tofloat(mpfr_ptr mf, mpz_ptr mz); /* init_mpfr --- set up MPFR related variables */ void -init_mpfr(const char *rmode) +init_mpfr(mpfr_prec_t prec, const char *rmode) { - mpfr_set_default_prec(PRECISION); + mpfr_set_default_prec(prec); RND_MODE = get_rnd_mode(rmode[0]); mpfr_set_default_rounding_mode(RND_MODE); make_number = mpg_make_number; @@ -565,10 +566,8 @@ set_PREC() do_ieee_fmt = FALSE; } - if (prec > 0) { + if (prec > 0) mpfr_set_default_prec(prec); - PRECISION = mpfr_get_default_prec(); - } } @@ -607,14 +606,14 @@ void set_RNDMODE() { if (do_mpfr) { - mpfr_rnd_t rnd = -1; + mpfr_rnd_t rndm = -1; NODE *n; n = force_string(RNDMODE_node->var_value); if (n->stlen == 1) - rnd = get_rnd_mode(n->stptr[0]); - if (rnd != -1) { - mpfr_set_default_rounding_mode(rnd); - RND_MODE = rnd; + rndm = get_rnd_mode(n->stptr[0]); + if (rndm != -1) { + mpfr_set_default_rounding_mode(rndm); + RND_MODE = rndm; } else warning(_("RNDMODE value `%.*s' is invalid"), (int) n->stlen, n->stptr); } |