From 8755a0384a99371031f088b1d3ede15d16d90b2d Mon Sep 17 00:00:00 2001 From: mottelet Date: Tue, 2 Jun 2020 09:16:44 +0200 Subject: [PATCH] [ast] fix wrong alignment of complex display https://bugzilla.scilab.org/show_bug.cgi?id=15781#c8 Change-Id: I284e133072488ad1df0351bed12b53a23b68dd93 --- scilab/modules/ast/src/cpp/types/double.cpp | 4 +- .../ast/tests/nonreg_tests/bug_15781.dia.ref | 117 +++++++++++++------- .../modules/ast/tests/nonreg_tests/bug_15781.tst | 13 +++ 3 files changed, 92 insertions(+), 42 deletions(-) diff --git a/scilab/modules/ast/src/cpp/types/double.cpp b/scilab/modules/ast/src/cpp/types/double.cpp index 501724d..46b8175 100644 --- a/scilab/modules/ast/src/cpp/types/double.cpp +++ b/scilab/modules/ast/src/cpp/types/double.cpp @@ -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++) diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_15781.dia.ref b/scilab/modules/ast/tests/nonreg_tests/bug_15781.dia.ref index 938576f..73895bc 100644 --- a/scilab/modules/ast/tests/nonreg_tests/bug_15781.dia.ref +++ b/scilab/modules/ast/tests/nonreg_tests/bug_15781.dia.ref @@ -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 diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_15781.tst b/scilab/modules/ast/tests/nonreg_tests/bug_15781.tst index 281972f..bf7c97c 100644 --- a/scilab/modules/ast/tests/nonreg_tests/bug_15781.tst +++ b/scilab/modules/ast/tests/nonreg_tests/bug_15781.tst @@ -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 -- 1.7.9.5