aboutsummaryrefslogtreecommitdiffstats
path: root/field.c
diff options
context:
space:
mode:
authorjohn haque <j.eh@mchsi.com>2012-03-19 04:30:00 -0500
committerjohn haque <j.eh@mchsi.com>2012-03-19 04:30:00 -0500
commit40645cb3cb155eb59dd745af4ae0e06e729c8eb1 (patch)
tree1c24a9a6cb2ac9acc985b3f4667c7139c10c4525 /field.c
parentb5431a4825e325c61f4043e4d25e47d7891c228c (diff)
downloadegawk-40645cb3cb155eb59dd745af4ae0e06e729c8eb1.tar.gz
egawk-40645cb3cb155eb59dd745af4ae0e06e729c8eb1.tar.bz2
egawk-40645cb3cb155eb59dd745af4ae0e06e729c8eb1.zip
Add arbitrary-precision arithmetic on integers.
Diffstat (limited to 'field.c')
-rw-r--r--field.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/field.c b/field.c
index d496a579..26ece846 100644
--- a/field.c
+++ b/field.c
@@ -203,11 +203,14 @@ rebuild_record()
*n = *Null_field;
n->stlen = r->stlen;
if ((r->flags & (NUMCUR|NUMBER)) != 0) {
- n->flags |= (r->flags & (NUMCUR|NUMBER));
+ n->flags |= (r->flags & (MPFN|MPZN|NUMCUR|NUMBER));
#ifdef HAVE_MPFR
- if (r->flags & MPFN) {
+ if (is_mpg_float(r)) {
mpfr_init(n->mpg_numbr);
mpfr_set(n->mpg_numbr, r->mpg_numbr, RND_MODE);
+ } else if (is_mpg_integer(r)) {
+ mpz_init(n->mpg_i);
+ mpz_set(n->mpg_i, r->mpg_i);
} else
#endif
n->numbr = r->numbr;