diff libinterp/corefcn/pr-output.cc @ 27458:2f4e8dce06da

Don't print leading spaces before scalar values in interpeter (bug #56939) * pr-output.cc (make_scalar_format): Reduce width (fw) for all formats so they display without initial leading spaces. Update BIST tests for new behavior. * oct-parse.yy (Fevalc): Update BIST tests for new behavior.
author Rik <rik@octave.org>
date Sun, 29 Sep 2019 17:50:52 -0700
parents 43ece0b8318b
children 36b610122086
line wrap: on
line diff
--- a/libinterp/corefcn/pr-output.cc	Sun Sep 29 17:47:30 2019 +0200
+++ b/libinterp/corefcn/pr-output.cc	Sun Sep 29 17:50:52 2019 -0700
@@ -368,9 +368,9 @@
     }
   else if (bank_format)
     {
-      fw = (digits < 0 ? 5 : digits + 4);
-      if (inf_or_nan && fw < 5)
-        fw = 5;
+      fw = (digits < 0 ? 4 : digits + 3);
+      if (inf_or_nan)
+        fw = 3;
       rd = 2;
     }
   else if (hex_format)
@@ -383,17 +383,15 @@
       fw = 8 * sizeof (T);
       rd = 0;
     }
-  else if (inf_or_nan || int_only)
+  else if (inf_or_nan)
     {
-      fw = 1 + digits;
-      if (inf_or_nan && fw < 4)
-        fw = 4;
-
-      if (int_only)
-        {
-          ld = digits;
-          rd = 0;
-        }
+      fw = 3;
+    }
+  else if (int_only)
+    {
+      fw = digits;
+      ld = digits;
+      rd = 0;
     }
   else
     {
@@ -413,7 +411,7 @@
           rd = (prec > digits ? prec - 1 : prec);
         }
 
-      fw = 1 + ld + 1 + rd;
+      fw = ld + 1 + rd;
     }
 
   if (! (rat_format || bank_format || hex_format || bit_format)
@@ -422,7 +420,7 @@
           || fw > pr_output_traits<T>::max_field_width))
     {
       if (print_g)
-        fmt = float_format (prec+5, prec);
+        fmt = float_format (prec, prec);
       else
         {
           // e+ddd
@@ -431,17 +429,23 @@
           if (print_eng)
             {
               // -ddd.
-              fw = 5 + prec + ex;
-              if (inf_or_nan && fw < 6)
-                fw = 6;
+              fw = 1 + prec + ex;
+              if (inf_or_nan)
+                {
+                  fw = 3;
+                  ex = 0;
+                }
               fmt = float_format (fw, ex, prec - 1, std::ios::fixed);
             }
           else
             {
               // -d.
-              fw = 3 + prec + ex;
-              if (inf_or_nan && fw < 4)
-                fw = 4;
+              fw = prec + ex;
+              if (inf_or_nan)
+                {
+                  fw = 3;
+                  ex = 0;
+                }
               fmt = float_format (fw, ex, prec - 1, std::ios::scientific);
             }
         }
@@ -3458,7 +3462,7 @@
 %! unwind_protect
 %!   format short;
 %!   str = evalc ("x = 1.1; display (x)");
-%!   assert (str, "x =  1.1000\n");
+%!   assert (str, "x = 1.1000\n");
 %! unwind_protect_cleanup
 %!   format (old_fmt);
 %!   format (old_spacing);
@@ -3469,7 +3473,7 @@
 %! unwind_protect
 %!   format short;
 %!   str = evalc ("display (1.1)");
-%!   assert (str, " 1.1000\n");
+%!   assert (str, "1.1000\n");
 %! unwind_protect_cleanup
 %!   format (old_fmt);
 %!   format (old_spacing);
@@ -3939,9 +3943,9 @@
 %!   ## Test one of the formats
 %!   format long;
 %!   str = disp (pi);
-%!   assert (str, " 3.141592653589793\n");
+%!   assert (str, "3.141592653589793\n");
 %!   str = disp (single (pi));
-%!   assert (str, " 3.1415927\n");
+%!   assert (str, "3.1415927\n");
 %!   new_fmt = format ();
 %!   assert (new_fmt, "long");
 %!   ## Test resetting format