diff options
author | john haque <j.eh@mchsi.com> | 2012-03-19 04:30:00 -0500 |
---|---|---|
committer | john haque <j.eh@mchsi.com> | 2012-03-19 04:30:00 -0500 |
commit | 40645cb3cb155eb59dd745af4ae0e06e729c8eb1 (patch) | |
tree | 1c24a9a6cb2ac9acc985b3f4667c7139c10c4525 /field.c | |
parent | b5431a4825e325c61f4043e4d25e47d7891c228c (diff) | |
download | egawk-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.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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; |