[ast] fix wrong alignment of complex display 79/21479/4
mottelet [Tue, 2 Jun 2020 07:16:44 +0000 (09:16 +0200)]
https://bugzilla.scilab.org/show_bug.cgi?id=15781#c8

Change-Id: I284e133072488ad1df0351bed12b53a23b68dd93

scilab/modules/ast/src/cpp/types/double.cpp
scilab/modules/ast/tests/nonreg_tests/bug_15781.dia.ref
scilab/modules/ast/tests/nonreg_tests/bug_15781.tst

index 501724d..46b8175 100644 (file)
@@ -552,6 +552,7 @@ bool Double::subMatrixToString(std::wostringstream& ostr, int* _piDims, int /*_i
             //compute the row size for padding for the full matrix.
             for (int iCols1 = 0; iCols1 < getCols() ; iCols1++)
             {
+                DoubleFormat dfR, dfI;
                 for (int iRows1 = 0 ; iRows1 < getRows() ; iRows1++)
                 {
                     int iTotalWidth = 0;
@@ -559,13 +560,12 @@ bool Double::subMatrixToString(std::wostringstream& ostr, int* _piDims, int /*_i
                     _piDims[1] = iCols1;
                     int iPos = getIndex(_piDims);
 
-                    DoubleFormat dfR, dfI;
                     getComplexFormat(m_pRealData[iPos], m_pImgData[iPos], &iTotalWidth, &dfR, &dfI);
                     // keep track of real and imaginary part width for further alignment
                     piISize[iCols1] = std::max(piISize[iCols1], dfI.iWidth);
                     piRSize[iCols1] = std::max(piRSize[iCols1], dfR.iWidth);
-                    piSize[iCols1]  = std::max(piSize[iCols1], iTotalWidth);
                 }
+                piSize[iCols1] = piISize[iCols1] + piRSize[iCols1] + 2 * (dfR.bPrintBlank ? BLANK_SIZE : 0) + BLANK_SIZE + SIZE_SYMBOL_I;
             }
 
             for (int iCols1 = m_iCols1PrintState ; iCols1 < getCols() ; iCols1++)
index 938576f..73895bc 100644 (file)
@@ -43,10 +43,10 @@ end
    0. + 0.i   0.7539023 + 0.6569866i   Nan       + 0.i       
    0. + 0.i   0.1367372 + 0.9906074i  -0.7596879 + 0.6502878i
          column 4
-   0.9074468 + 0.420167i
+   0.9074468 + 0.420167i 
   -0.1455    + 0.9893582i
    0.843854  - 0.5365729i
-   Inf       + 0.i      
+   Inf       + 0.i       
          column 1 to 3
    0. + 0.i  -0.4161468 + 0.9092974i  -0.9899925 + 0.14112i
          column 4
@@ -56,7 +56,10 @@ end
   " "
    0. + 0.i   0.7539023 + 0.6569866i   Nan + 0.i   0.843854 - 0.5365729i
   " "
-   0. + 0.i   0.1367372 + 0.9906074i  -0.7596879 + 0.6502878i   Inf + 0.i
+         column 1 to 3
+   0. + 0.i   0.1367372 + 0.9906074i  -0.7596879 + 0.6502878i
+         column 4
+   Inf + 0.i
   " "
    0.
    0.
@@ -73,10 +76,10 @@ end
    Nan       + 0.i       
   -0.7596879 + 0.6502878i
   " "
-   0.9074468 + 0.420167i
+   0.9074468 + 0.420167i 
   -0.1455    + 0.9893582i
    0.843854  - 0.5365729i
-   Inf       + 0.i      
+   Inf       + 0.i       
   " "
    0. + 0.i   0. + 0.i   0.  + 0.i   0.  + 0.i
    0. + 0.i   0. + 0.i   0.  + 0.i   0.  + 0.i
@@ -90,38 +93,38 @@ end
   -0.5493061 - 1.5707963i
    0.        - 1.5707963i
    0.5493061 - 1.5707963i
-   Inf       + Nani      
+   Nan       + Nani      
    0.804719  + 3.1415927i
    0.5493061 + 3.1415927i
-         column 1 to 3
-   0.000D+00 + 0.000D+00i  -4.161D-01 + 9.093D-01i  -9.900D-01 + 1.411D-01i
-   0.000D+00 + 0.000D+00i   1.000D+00 + 1.000D+00i  -8.391D-01 - 5.440D-01i
-   0.000D+00 + 0.000D+00i   7.539D-01 + 6.570D-01i   Nan       + 0.000D+00i
-   0.000D+00 + 0.000D+00i   1.367D-01 + 9.906D-01i  -7.597D-01 + 6.503D-01i
-         column 4
-   9.074D-01 + 4.202D-01i
-  -1.455D-01 + 9.894D-01i
-   8.439D-01 - 5.366D-01i
-   Inf       + 0.000D+00i
-         column 1 to 3
-   0.000D+00 + 0.000D+00i  -4.161D-01 + 9.093D-01i  -9.900D-01 + 1.411D-01i
-         column 4
-   9.074D-01 + 4.202D-01i
-  " "
-         column 1 to 3
-   0.000D+00 + 0.000D+00i   1.000D+00 + 1.000D+00i  -8.391D-01 - 5.440D-01i
-         column 4
-  -1.455D-01 + 9.894D-01i
+         column 1 to 2
+   0.000D+00 + 0.000D+00i  -4.161D-01 + 9.093D-01i
+   0.000D+00 + 0.000D+00i   1.000D+00 + 1.000D+00i
+   0.000D+00 + 0.000D+00i   7.539D-01 + 6.570D-01i
+   0.000D+00 + 0.000D+00i   1.367D-01 + 9.906D-01i
+         column 3 to 4
+  -9.900D-01 + 1.411D-01i   9.074D-01 + 4.202D-01i
+  -8.391D-01 - 5.440D-01i  -1.455D-01 + 9.894D-01i
+   Nan       + 0.000D+00i   8.439D-01 - 5.366D-01i
+  -7.597D-01 + 6.503D-01i   Inf       + 0.000D+00i
+         column 1 to 2
+   0.000D+00 + 0.000D+00i  -4.161D-01 + 9.093D-01i
+         column 3 to 4
+  -9.900D-01 + 1.411D-01i   9.074D-01 + 4.202D-01i
+  " "
+         column 1 to 2
+   0.000D+00 + 0.000D+00i   1.000D+00 + 1.000D+00i
+         column 3 to 4
+  -8.391D-01 - 5.440D-01i  -1.455D-01 + 9.894D-01i
   " "
          column 1 to 3
    0.000D+00 + 0.000D+00i   7.539D-01 + 6.570D-01i   Nan + 0.000D+00i
          column 4
    8.439D-01 - 5.366D-01i
   " "
-         column 1 to 3
-   0.000D+00 + 0.000D+00i   1.367D-01 + 9.906D-01i  -7.597D-01 + 6.503D-01i
-         column 4
-   Inf + 0.000D+00i
+         column 1 to 2
+   0.000D+00 + 0.000D+00i   1.367D-01 + 9.906D-01i
+         column 3 to 4
+  -7.597D-01 + 6.503D-01i   Inf + 0.000D+00i
   " "
    0.000D+00
    0.000D+00
@@ -143,16 +146,16 @@ end
    8.439D-01 - 5.366D-01i
    Inf       + 0.000D+00i
   " "
-         column 1 to 3
-   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
-   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
-   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i   Nan       + 0.000D+00i
-   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
-         column 4
-   0.000D+00 + 0.000D+00i
-   0.000D+00 + 0.000D+00i
-   0.000D+00 + 0.000D+00i
-   Nan       + 0.000D+00i
+         column 1 to 2
+   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
+   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
+   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
+   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
+         column 3 to 4
+   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
+   0.000D+00 + 0.000D+00i   0.000D+00 + 0.000D+00i
+   Nan       + 0.000D+00i   0.000D+00 + 0.000D+00i
+   0.000D+00 + 0.000D+00i   Nan       + 0.000D+00i
   " "
  ans  =
   -5.493D-01 + 0.000D+00i
@@ -161,6 +164,40 @@ end
   -5.493D-01 - 1.571D+00i
    0.000D+00 - 1.571D+00i
    5.493D-01 - 1.571D+00i
-   Inf       + Nani      
+   Nan       + Nani      
    8.047D-01 + 3.142D+00i
    5.493D-01 + 3.142D+00i
+format("v")
+a= [0,0,%i*0.6795197,0.7161007+%i*0.3997826,0
+0,%i*0.977002,0,0,0
+0,0.2629713,0,0,0.4505416
+0,%i*0.8173032,0.529842,0,%i*0.8558751
+0,0,0,0.7481516,%i*0.2598704
+0,0.3402197+%i*0.3631865,0,0,0
+0,%i*0.8686947,%i*0.0844358,0.9883794,0
+0,0,0,0,0
+0,0.6540791,0.6892145+%i*0.3462334,0,0
+0,0,0,0,0.7204935]
+ a  = 
+         column 1 to 3
+   0. + 0.i   0.        + 0.i          0.        + 0.6795197i
+   0. + 0.i   0.        + 0.977002i    0.        + 0.i       
+   0. + 0.i   0.2629713 + 0.i          0.        + 0.i       
+   0. + 0.i   0.        + 0.8173032i   0.529842  + 0.i       
+   0. + 0.i   0.        + 0.i          0.        + 0.i       
+   0. + 0.i   0.3402197 + 0.3631865i   0.        + 0.i       
+   0. + 0.i   0.        + 0.8686947i   0.        + 0.0844358i
+   0. + 0.i   0.        + 0.i          0.        + 0.i       
+   0. + 0.i   0.6540791 + 0.i          0.6892145 + 0.3462334i
+   0. + 0.i   0.        + 0.i          0.        + 0.i       
+         column 4 to 5
+   0.7161007 + 0.3997826i   0.        + 0.i       
+   0.        + 0.i          0.        + 0.i       
+   0.        + 0.i          0.4505416 + 0.i       
+   0.        + 0.i          0.        + 0.8558751i
+   0.7481516 + 0.i          0.        + 0.2598704i
+   0.        + 0.i          0.        + 0.i       
+   0.9883794 + 0.i          0.        + 0.i       
+   0.        + 0.i          0.        + 0.i       
+   0.        + 0.i          0.        + 0.i       
+   0.        + 0.i          0.7204935 + 0.i       
index 281972f..bf7c97c 100644 (file)
@@ -43,3 +43,16 @@ for f = ["v","e"]
 
     acoth(-2:0.5:2).'
 end
+
+format("v")
+
+a= [0,0,%i*0.6795197,0.7161007+%i*0.3997826,0
+0,%i*0.977002,0,0,0
+0,0.2629713,0,0,0.4505416
+0,%i*0.8173032,0.529842,0,%i*0.8558751
+0,0,0,0.7481516,%i*0.2598704
+0,0.3402197+%i*0.3631865,0,0,0
+0,%i*0.8686947,%i*0.0844358,0.9883794,0
+0,0,0,0,0
+0,0.6540791,0.6892145+%i*0.3462334,0,0
+0,0,0,0,0.7204935]
\ No newline at end of file