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)