This is a patch to make cube output work like double precision output
authorBruce Momjian <bruce@momjian.us>
Sat, 23 Nov 2002 03:50:21 +0000 (03:50 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 23 Nov 2002 03:50:21 +0000 (03:50 +0000)
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
contrib/cube/expected/cube.out

index 98c6167e6255f52810b37d9b617b35761f9c9ee1..d24d0f559324c667f3900cc331bfe1884cfad933 100644 (file)
@@ -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, ')');
        }
index 5eeeb0f5fc3d2dfe8f28117dd71b7a35b7433538..beced4e64a812c322cef306773c90bb85e6b30a5 100644 (file)
@@ -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)