From 4987ca2d888cb544a0d4edd6c9db63f04e194d3c Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 23 Nov 2002 03:50:21 +0000 Subject: [PATCH] This is a patch to make cube output work like double precision output with regard to the extra_float_digits setting. Since builtins.h was already included, I just deleted the extern statement (and accompaning comments). Bruno Wolff III --- contrib/cube/cube.c | 11 +++++++++-- contrib/cube/expected/cube.out | 36 +++++++++++++++++----------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c index 98c6167e62..d24d0f5593 100644 --- a/contrib/cube/cube.c +++ b/contrib/cube/cube.c @@ -121,9 +121,16 @@ cube_out(NDBOX * cube) bool equal = true; int dim = cube->dim; int i; + int ndig; initStringInfo(&buf); + /* + * Get the number of digits to display. + */ + ndig = DBL_DIG + extra_float_digits; + if (ndig < 1) ndig = 1; + /* * while printing the first (LL) corner, check if it is equal to the * second one @@ -133,7 +140,7 @@ cube_out(NDBOX * cube) { if (i > 0) appendStringInfo(&buf, ", "); - appendStringInfo(&buf, "%.16g", cube->x[i]); + appendStringInfo(&buf, "%.*g", ndig, cube->x[i]); if (cube->x[i] != cube->x[i + dim]) equal = false; } @@ -146,7 +153,7 @@ cube_out(NDBOX * cube) { if (i > 0) appendStringInfo(&buf, ", "); - appendStringInfo(&buf, "%.16g", cube->x[i + dim]); + appendStringInfo(&buf, "%.*g", ndig, cube->x[i + dim]); } appendStringInfoChar(&buf, ')'); } diff --git a/contrib/cube/expected/cube.out b/contrib/cube/expected/cube.out index 5eeeb0f5fc..beced4e64a 100644 --- a/contrib/cube/expected/cube.out +++ b/contrib/cube/expected/cube.out @@ -145,39 +145,39 @@ SELECT '-1e-700'::cube AS cube; (1 row) SELECT '1234567890123456'::cube AS cube; - cube --------------------- - (1234567890123456) + cube +------------------------ + (1.23456789012346e+15) (1 row) SELECT '+1234567890123456'::cube AS cube; - cube --------------------- - (1234567890123456) + cube +------------------------ + (1.23456789012346e+15) (1 row) SELECT '-1234567890123456'::cube AS cube; - cube ---------------------- - (-1234567890123456) + cube +------------------------- + (-1.23456789012346e+15) (1 row) SELECT '.1234567890123456'::cube AS cube; - cube ----------------------- - (0.1234567890123456) + cube +--------------------- + (0.123456789012346) (1 row) SELECT '+.1234567890123456'::cube AS cube; - cube ----------------------- - (0.1234567890123456) + cube +--------------------- + (0.123456789012346) (1 row) SELECT '-.1234567890123456'::cube AS cube; - cube ------------------------ - (-0.1234567890123456) + cube +---------------------- + (-0.123456789012346) (1 row) -- simple lists (points)