aboutsummaryrefslogtreecommitdiffstats
path: root/extension/intdiv.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2018-02-14 21:04:35 +0200
committerArnold D. Robbins <arnold@skeeve.com>2018-02-14 21:04:35 +0200
commit8f67459bc82490cca23d511c787a9459c9fca372 (patch)
tree27db9eee674eebd47672f813e42e382ba26e5992 /extension/intdiv.c
parent0f906dfde40392937b3461f040b7ed52e3d0abbf (diff)
parentb9cc8418bb162e3714abb3313faf7c18b5d10bb0 (diff)
downloadegawk-8f67459bc82490cca23d511c787a9459c9fca372.tar.gz
egawk-8f67459bc82490cca23d511c787a9459c9fca372.tar.bz2
egawk-8f67459bc82490cca23d511c787a9459c9fca372.zip
Merge branch 'gawk-4.2-stable'
Diffstat (limited to 'extension/intdiv.c')
-rw-r--r--extension/intdiv.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/extension/intdiv.c b/extension/intdiv.c
index 529ea361..bd0919cc 100644
--- a/extension/intdiv.c
+++ b/extension/intdiv.c
@@ -126,11 +126,21 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused)
clear_array(array);
#ifdef HAVE_MPFR
- if (nv.num_type == AWK_NUMBER_TYPE_DOUBLE && dv.num_type == AWK_NUMBER_TYPE_DOUBLE) {
+ if (nv.num_type == AWK_NUMBER_TYPE_DOUBLE && dv.num_type == AWK_NUMBER_TYPE_DOUBLE)
#endif
+ {
/* regular precision */
double num, denom, quotient, remainder;
+#ifndef HAVE_MPFR
+ if (nv.num_type != AWK_NUMBER_TYPE_DOUBLE || dv.num_type != AWK_NUMBER_TYPE_DOUBLE) {
+ static int warned = 0;
+ if (!warned) {
+ warning(ext_id, _("intdiv: MPFR arguments converted to IEEE because this extension was not compiled with MPFR support; loss of precision may occur"));
+ warned = 1;
+ }
+ }
+#endif
num = double_to_int(nv.num_value);
denom = double_to_int(dv.num_value);
@@ -150,8 +160,9 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused)
array_set_number(array, "quotient", 8, quotient);
array_set_number(array, "remainder", 9, remainder);
+ }
#ifdef HAVE_MPFR
- } else {
+ else {
/* extended precision */
mpz_ptr numer, denom;
mpz_t numer_tmp, denom_tmp;