Fix complex display 13/15113/2
Bruno JOFRET [Thu, 28 Aug 2014 08:49:29 +0000 (10:49 +0200)]
Change-Id: I7b1caed2f483ab93d8b52d09ea456319a3280579

scilab/modules/ast/src/cpp/types/double.cpp
scilab/modules/ast/src/cpp/types/tostring_common.cpp
scilab/modules/ast/tests/unit_tests/displaycomplex.dia.ref [new file with mode: 0644]
scilab/modules/ast/tests/unit_tests/displaycomplex.tst [new file with mode: 0644]

index 151b63f..d9de6d9 100644 (file)
@@ -456,7 +456,6 @@ bool Double::subMatrixToString(wostringstream& ostr, int* _piDims, int _iDims)
                 DoubleFormat dfR, dfI;
                 getComplexFormat(ZeroIsZero(m_pRealData[iPos]), ZeroIsZero(m_pImgData[iPos]), &iTotalLen, &dfR, &dfI);
 
-                iLen = static_cast<int>(ostemp.str().size());
                 if (isRealZero(m_pImgData[iPos]))
                 {
                     if (isRealZero(m_pRealData[iPos]))
index b81c009..d5dacd7 100644 (file)
@@ -344,6 +344,11 @@ void addDoubleComplexValue(wostringstream * _postr, double _dblR, double _dblI,
             df.bPrintOne = false;
             addDoubleValue(&ostemp, _dblI, &df);
             ostemp << left << SYMBOL_I;
+            if (_dblI == 1)
+            {
+                addSpaces(&ostemp, 2);
+            }
+
         }
     }
     else
@@ -382,10 +387,14 @@ void addDoubleComplexValue(wostringstream * _postr, double _dblR, double _dblI,
 
             addDoubleValue(&ostemp, _dblI, &df);
             ostemp << left << SYMBOL_I;
+            if (_dblI == 1)
+            {
+                addSpaces(&ostemp, 2);
+            }
         }
     }
 
-    configureStream(_postr, _iTotalWidth, 0, ' ');
+    configureStream(_postr, _iTotalWidth - 3, 0, ' ');
     *_postr << left << ostemp.str();
 }
 
diff --git a/scilab/modules/ast/tests/unit_tests/displaycomplex.dia.ref b/scilab/modules/ast/tests/unit_tests/displaycomplex.dia.ref
new file mode 100644 (file)
index 0000000..96aa44f
--- /dev/null
@@ -0,0 +1,81 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Bruno JOFRET
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- JVM NOT MANDATORY -->
+// Test display of complex matrix, leave each line without semicolon
+complex(ones(1,5), ones(1,5))
+ ans  =
+    1. + i      1. + i      1. + i      1. + i      1. + i    
+complex(ones(1,5), 2*ones(1,5))
+ ans  =
+    1. + 2.i    1. + 2.i    1. + 2.i    1. + 2.i    1. + 2.i  
+complex(ones(1,5), zeros(1,5))
+ ans  =
+    1.    1.    1.    1.    1.  
+[1 + %i, 1 + 2*%i, 1 + 3*%i]
+ ans  =
+    1. + i      1. + 2.i    1. + 3.i  
+[1 + %i, 1 + 2*%i, 1 + 3*%i ; 1 + 3*%i, 1 + %i, 1+3*%i]
+ ans  =
+    1. + i      1. + 2.i    1. + 3.i  
+    1. + 3.i    1. + i      1. + 3.i  
+[1, 1+%i, 1 + 3*%i ; 1 + 3*%i, 1 + 3*%i, 1 + 3*%i]
+ ans  =
+    1.          1. + i      1. + 3.i  
+    1. + 3.i    1. + 3.i    1. + 3.i  
+[1, 1+%i, 1 + 3*%i ; 1 + 3*%i, 1 + %i, 1 + 3*%i]
+ ans  =
+    1.          1. + i      1. + 3.i  
+    1. + 3.i    1. + i      1. + 3.i  
+[rand() + rand()*%i, rand()+rand()*%i;
+ 1+%i, 1+%i;
+ 1, 1+%i;
+%i, 2 + 2*%i;
+-2, -2 - 2*%i]
+ ans  =
+    0.2113249 + 0.7560439i    0.0002211 + 0.3303271i  
+    1. + i                    1. + i                  
+    1.                        1. + i                  
+    i                         2. + 2.i                
+  - 2.                      - 2. - 2.i                
+[ 1+%i, 1+%i;
+ 1, 1+%i;
+%i, 2 + 2*%i;
+-2, -2 - 2*%i]
+ ans  =
+    1. + i      1. + i    
+    1.          1. + i    
+    i           2. + 2.i  
+  - 2.        - 2. - 2.i  
+[2+2*%i, 2+2*%i;]
+ ans  =
+    2. + 2.i    2. + 2.i  
+[ 1+%i, 1+%i]
+ ans  =
+    1. + i      1. + i    
+[1+%i, 1+%i;
+1+%i, 1+%i;]
+ ans  =
+    1. + i      1. + i    
+    1. + i      1. + i    
+[%i, 1+%i]
+ ans  =
+    i      1. + i    
+[%i, 1+%i;
+%i, 1+%i];
diff --git a/scilab/modules/ast/tests/unit_tests/displaycomplex.tst b/scilab/modules/ast/tests/unit_tests/displaycomplex.tst
new file mode 100644 (file)
index 0000000..b63bcd3
--- /dev/null
@@ -0,0 +1,47 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Bruno JOFRET
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// Test display of complex matrix, leave each line without semicolon
+
+complex(ones(1,5), ones(1,5))
+
+complex(ones(1,5), 2*ones(1,5))
+
+complex(ones(1,5), zeros(1,5))
+
+[1 + %i, 1 + 2*%i, 1 + 3*%i]
+
+[1 + %i, 1 + 2*%i, 1 + 3*%i ; 1 + 3*%i, 1 + %i, 1+3*%i]
+
+[1, 1+%i, 1 + 3*%i ; 1 + 3*%i, 1 + 3*%i, 1 + 3*%i]
+
+[1, 1+%i, 1 + 3*%i ; 1 + 3*%i, 1 + %i, 1 + 3*%i]
+
+[rand() + rand()*%i, rand()+rand()*%i;
+ 1+%i, 1+%i;
+ 1, 1+%i;
+%i, 2 + 2*%i;
+-2, -2 - 2*%i]
+
+[ 1+%i, 1+%i;
+ 1, 1+%i;
+%i, 2 + 2*%i;
+-2, -2 - 2*%i]
+
+[2+2*%i, 2+2*%i;]
+
+[ 1+%i, 1+%i]
+
+[1+%i, 1+%i;
+1+%i, 1+%i;]
+
+[%i, 1+%i]
+
+[%i, 1+%i;
+%i, 1+%i];
\ No newline at end of file