* Bug 16067 fixed: now matrices of signed integers are displayed correctly 74/20974/5
Stéphane MOTTELET [Fri, 10 May 2019 16:13:44 +0000 (18:13 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=16067

Change-Id: I214dadbba27169d0d032400ed1be1bb0f3c1a4fc

scilab/CHANGES.md
scilab/modules/ast/includes/types/int.hxx
scilab/modules/ast/includes/types/tostring_common.hxx
scilab/modules/ast/tests/nonreg_tests/bug_16067.dia.ref [new file with mode: 0644]
scilab/modules/ast/tests/nonreg_tests/bug_16067.tst [new file with mode: 0644]

index 3f56eb9..fc88724 100644 (file)
@@ -164,6 +164,7 @@ Bug Fixes
 * [#16014](http://bugzilla.scilab.org/show_bug.cgi?id=16014): after `x.a=1; x(:)=[]` x.a was an empty list. 
 * [#16015](http://bugzilla.scilab.org/show_bug.cgi?id=116015): `intg(a,b,f)` called f(x) with x outside [a,b].
 * [#16021](http://bugzilla.scilab.org/show_bug.cgi?id=16021): `tand([-90 90])` answered [Nan Nan] instead of [-Inf, Inf]. `cotd([-90 90])` answered [Nan Nan] instead of [0 0]. `1 ./cosd([-90 90])` answered [Inf -Inf] instead of [Inf Inf].
+* [#16067](http://bugzilla.scilab.org/show_bug.cgi?id=16067): The display of matrices of signed integers was misaligned (regression of 6.0.0 vs 5.5.2)
 * [#16071](http://bugzilla.scilab.org/show_bug.cgi?id=16071): `prettyprint(complex(1,%nan))` omitted the "+" in `1 + Nani`. It printed positive exponents with a useless "+". For any input nul polynomial, the string result never included the name of the variable. Default input arguments could not be skipped. ExportFormat was uselessly case-sensitive. For tex|latex: for text input, $ \ % & { } ~ and ^ special characters were not protected ; spaces were not protected, all words were concatenated ; for polynomials and rationals, the result string could be extremely long and not easily wrappable. For MathML: "<" was not protected ; <mi></mi> were missing for text input ; <mtable>, </mtable>, <mtr>, </mtr>, <mtd>, <mfenced> and </mfenced> tags were not wrapped and could not be indented. Delimiters: "" was not documented as possible value ; ")" was wrongly documented. Dynamical linear systems were not documented as possible input.
 * [#16072](http://bugzilla.scilab.org/show_bug.cgi?id=16072): `prettyprint()` did not actually support input encoded integers.
 * [#16075](http://bugzilla.scilab.org/show_bug.cgi?id=16075): `prettyprint()` was broken for cells.
index a0fdbc9..e15ef66 100644 (file)
@@ -96,7 +96,7 @@ public :
         pbClone->set(ArrayOf<T>::get());
         return pbClone;
     }
-    
+
     /*Config management*/
     void whoAmI();
 
@@ -467,6 +467,7 @@ private :
             }
 
             ostr << ostemp.str();
+            delete[] piSize;
         }
 
         return true;
index ead16c6..d58f6a8 100644 (file)
@@ -101,7 +101,7 @@ void getSignedIntFormat(T _TVal, int *_piWidth)
     {
         unsigned long long a = _abs64(_TVal);
         long double b = static_cast<long double>(a);
-        long double c = log10(b + 1);
+        long double c = log10(b) + 1;
         *_piWidth = static_cast<int>(c);
         //*_piWidth = static_cast<int>(log10(static_cast<unsigned long double>(_abs64(_TVal))) + 1);
     }
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_16067.dia.ref b/scilab/modules/ast/tests/nonreg_tests/bug_16067.dia.ref
new file mode 100644 (file)
index 0000000..8ad30e2
--- /dev/null
@@ -0,0 +1,194 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - Stéphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 16067 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/16067
+//
+// <-- Short Description -->
+//The display of matrices of signed integers is misaligned (int8 int16 int32 int64)(regression of 6.0.0 vs 5.5.2)
+for i=1:4
+    int8(2^7*grand(3,4,'unf',-1,1))
+    int16(2^15*grand(3,4,'unf',-1,1))
+    int32(2^31*grand(3,4,'unf',-1,1))
+    int64(2^63*grand(3,4,'unf',-1,1))
+    uint8(2^8*grand(3,4,'unf',0,1))
+    uint16(2^16*grand(3,4,'unf',0,1))
+    uint32(2^32*grand(3,4,'unf',0,1))
+    uint64(2^64*grand(3,4,'unf',0,1))
+end
+ ans  =
+   80   85  105  -49
+  -93  -95  -71 -103
+  103  120   33   12
+ ans  =
+ -14516  32301  30466  14800
+ -20422  29983  30650  30840
+   3072  32536 -22438  31530
+ ans  =
+  1963517098  1280354905 -1538086436 -1664452230
+ -1675631022  1289694812 -2126938739  1785570478
+   -62811112  -871751877  -336032719   600279047
+ ans  =
+         column 1 to 3
+  5390273742771322880    67564474130759680 -8564607826985484288
+  6980813261918699520  2872908761075286016 -2558674058753343488
+  8476139171499474944  5495812913279008768  6440298946341371904
+         column 4
+ -5314058117879693312
+  8005762333290790912
+  3345492989135814656
+ ans  =
+  173  189  100  44
+  102  190  108  43
+  193  121  167  77
+ ans  =
+  46271  20745  3025  65147
+  52250  18148  9772  53966
+   2086  57175  6365  53864
+ ans  =
+  2984266209  3280281326   147944788   540721923
+   537655879  4081172609  2850164008  1638781099
+  1361931891  2107063880  1884392678   902841100
+ ans  =
+         column 1 to 3
+  14121292345383059456   672222438351699968  9034558449819582464
+    944776295542161408  3447191088786309120  8448408736627687424
+  14668849118835638272  7539759120409165824  8219614583229251584
+         column 4
+   8994059210320773120
+  11922370713052250112
+  14646253098322886656
+ ans  =
+   53  78   46  53
+  107 -57 -127 -86
+   65  52   39  36
+ ans  =
+ -24969  17951 -10460  20196
+  -2881  30129  24691 -18100
+   -107   4833   5588 -31603
+ ans  =
+  1079183806  1378000675   855028007  -330003313
+  1379741027    25585315  -375094463  1972641633
+ -1051858491  1890103561  1678916694   347706282
+ ans  =
+         column 1 to 3
+   870972861722918912  4828088714435493888 -4473183270275645440
+ -6307724228015685632 -6469383713250607104  5713593950191747072
+ -6666202462195548160 -4977742018026405888  6285123912535638016
+         column 4
+  9011632940890718208
+ -4532693761603403776
+ -3090783655908343808
+ ans  =
+  208    3   89  217
+   76  237  232   64
+   62   55   50  244
+ ans  =
+  40373  64714  54449  38961
+  51045  23046  52009  36026
+  31017   4429  38355  48024
+ ans  =
+  3939316793  2919803768  3237241796   893645500
+  2986002498  3252150224  2411870849  2438775379
+  1227669233  1685003584  1634002467  2265043167
+ ans  =
+         column 1 to 3
+  1399264735462948864   6507317860841291776  14373098504056733696
+  7456331085786382336   9791486624025018368   6573407975778549760
+   995204052025344000  10935670365560504320  17229455947231920128
+         column 4
+  17800487701959409664
+   2396346607319646208
+   2848885961016737792
+ ans  =
+  17  -28 -41  109
+ -26 -124 -28   75
+  -7   58 -86  -16
+ ans  =
+ -12372   7887   6683 -10471
+  23768 -21912  -1837  10097
+   1869 -24933 -15533   1955
+ ans  =
+   812670082  2097573540 -1787473571    23615900
+   928145480  -212422213  1772006835  1775270450
+  1065802967   947012205 -1164035057   250262402
+ ans  =
+         column 1 to 3
+ -6412493753268830208 -692228713844047872  9152070120837742592
+    58845501541318656  707293041051828224  -966897125168250880
+  6010262343647232000  859469994411425792 -7781288066588606464
+         column 4
+  6538466638709129216
+ -1057399267280289792
+  1922731514093633536
+ ans  =
+   27  250  198   92
+  127    1  250  222
+  246    8  209  173
+ ans  =
+   5533  56090  52433  49148
+  22690  17030  43261  59680
+  26200   2953  28273   8716
+ ans  =
+   781027019   409547355   584409985   333104904
+  4219206494   625085180  3445042528  2489812253
+  1133024903  1214072539  3733581611  2694595213
+ ans  =
+         column 1 to 3
+  10143130470020284416  12549081281343782912  11474891805787422720
+    149306317478035456  15735646676502708224   8091974778031702016
+   2673944066080636928   9849327390981881856   6473928840916762624
+         column 4
+  3681070217175236608
+  9467782970514341888
+  2545675142663503872
+ ans  =
+  -25   67 -96   1
+  -30  -66 -63 -66
+ -108 -117 -80  82
+ ans  =
+  -5421  21197  29149 -16525
+  31570  26392 -29625   -704
+ -29513 -12987   -598   2887
+ ans  =
+  -696989839  -670704087 -1669871456  1620765671
+  1665271060  -561580796 -1447953204  -473568071
+  1718218197 -2004596236  1203673441 -1244243999
+ ans  =
+         column 1 to 3
+ -4764954761063563264  -139420702921981952 -6788894447888236544
+ -4191966575718301696 -7444099993884950528  -178905814742859776
+ -1772508126608621568 -5102001537933115392  8154393988716036096
+         column 4
+  8392223988801077248
+  8414197084437086208
+  2803327194208665600
+ ans  =
+  147  111   90   82
+  193   60   13    3
+   15  141  210  103
+ ans  =
+   2819  53027  47954  32330
+  59535  42540   8509  29551
+  11074  16927  42450  24805
+ ans  =
+  2349385293  1236112995   811555596  1342211552
+  3085804937  3198431244  3486972196   788174404
+  1272688179  2677635414  2949678043  1656614077
+ ans  =
+         column 1 to 3
+   6797341020766863360  15048283155582681088   1496506252493062144
+   6344384106054287360  14392655843797499904   6999042176864747520
+  11540625421259243520  12346131634087526400  17144145153565392896
+         column 4
+   8457774977968504832
+  14309373249652260864
+   5600689224304033792
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_16067.tst b/scilab/modules/ast/tests/nonreg_tests/bug_16067.tst
new file mode 100644 (file)
index 0000000..626ab0c
--- /dev/null
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - Stéphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 16067 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/16067
+//
+// <-- Short Description -->
+//The display of matrices of signed integers is misaligned (int8 int16 int32 int64)(regression of 6.0.0 vs 5.5.2)
+
+for i=1:4
+    int8(2^7*grand(3,4,'unf',-1,1))
+    int16(2^15*grand(3,4,'unf',-1,1))
+    int32(2^31*grand(3,4,'unf',-1,1))
+    int64(2^63*grand(3,4,'unf',-1,1))
+
+    uint8(2^8*grand(3,4,'unf',0,1))
+    uint16(2^16*grand(3,4,'unf',0,1))
+    uint32(2^32*grand(3,4,'unf',0,1))
+    uint64(2^64*grand(3,4,'unf',0,1))
+end