From 9ef43720d1b2b3125f4367f3ccf2cb7129d1a9ba Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Fri, 6 Jan 2017 14:48:53 -0500 Subject: Enhance API to support extended-precision arithmetic and implement intdiv as a demonstration. --- node.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'node.c') diff --git a/node.c b/node.c index 97f65fa3..b83d2ac2 100644 --- a/node.c +++ b/node.c @@ -332,16 +332,8 @@ r_dupnode(NODE *n) static NODE * r_make_number(double x) { - NODE *r; - getnode(r); - r->type = Node_val; + NODE *r = make_number_node(0); r->numbr = x; - r->flags = MALLOC|NUMBER|NUMCUR; - r->valref = 1; - r->stptr = NULL; - r->stlen = 0; - r->wstptr = NULL; - r->wstlen = 0; return r; } @@ -1005,6 +997,10 @@ BLOCK nextfree[BLOCK_MAX] = { { 0, NULL}, /* invalid */ { sizeof(NODE), NULL }, { sizeof(BUCKET), NULL }, +#ifdef HAVE_MPFR + { sizeof(mpfr_t), NULL }, + { sizeof(mpz_t), NULL }, +#endif }; @@ -1021,6 +1017,7 @@ more_blocks(int id) size = nextfree[id].size; + assert(size >= sizeof(BLOCK)); emalloc(freep, BLOCK *, BLOCKCHUNK * size, "more_blocks"); p = (char *) freep; endp = p + BLOCKCHUNK * size; -- cgit v1.2.3