Bug #15285 fixed: resize_matrix() extended to int64 and uint64 08/19408/3
Samuel GOUGEON [Wed, 30 Aug 2017 15:50:20 +0000 (17:50 +0200)]
Change-Id: I8ba10d6bb2cabfa7e91dec82b4d2aa241f383ab9

scilab/CHANGES.md
scilab/modules/elementary_functions/help/en_US/matrixmanipulation/resize_matrix.xml
scilab/modules/elementary_functions/help/fr_FR/matrixmanipulation/resize_matrix.xml
scilab/modules/elementary_functions/help/ja_JP/matrixmanipulation/resize_matrix.xml
scilab/modules/elementary_functions/macros/resize_matrix.sci
scilab/modules/elementary_functions/tests/nonreg_tests/bug_15285.tst [new file with mode: 0644]
scilab/modules/elementary_functions/tests/unit_tests/resize_matrix.dia.ref [deleted file]
scilab/modules/elementary_functions/tests/unit_tests/resize_matrix.tst

index b0c67f4..689a50a 100644 (file)
@@ -193,6 +193,7 @@ input and output arguments.
    - results with decimal-encoded integers > 2^32 are now correct.
    - decimal-encoded integers > 2^52 are now supported up to the biggest 1.80D+308.
    - `bitxor` is now vectorized and fast.
+* `resize_matrix`: Its conversion option is extended to the new `int64` and `uint64` integer types.
 * Interactively setting a common zoom box on multiple neighbouring or overlaying axes, and with
 bounds selected out of the axes areas is now restored, after the Scilab 5.4 regression.
 * Scroll to zoom:
@@ -420,6 +421,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#15266](http://bugzilla.scilab.org/show_bug.cgi?id=15266): Wrong default out_mode in `linear_interpn`.
 * [#15273](http://bugzilla.scilab.org/show_bug.cgi?id=15273): The documented order of `eval_cshep2d` second derivatives was wrong.
 * [#15282](http://bugzilla.scilab.org/show_bug.cgi?id=15282): `help_from_sci` could set an xml:id starting with the forbidden `%` character.
+* [#15285](http://bugzilla.scilab.org/show_bug.cgi?id=15285): `resize_matrix` did not manage convertion into int64 and uint64.
 
 ### Bugs fixed in 6.0.0:
 * [#592](http://bugzilla.scilab.org/show_bug.cgi?id=592): `linspace(a, b, n<=0)` returned `b` instead of `[]`
index 7c53cf9..dd58a81 100644 (file)
@@ -26,12 +26,12 @@ xmlns:scilab="http://www.scilab.org" xml:id="resize_matrix" xml:lang="en">
         <title>Syntax</title>
         <synopsis>
             resize_matrix   // demo
-            
+
             resMat = resize_matrix(mat, nbRows, nbCols)
             resMat = resize_matrix(mat, nbRows, nbCols, resType)
             resMat = resize_matrix(mat, nbRows, nbCols, resType, padding)
             resMat = resize_matrix(mat, nbRows, nbCols,    ""  , padding)
-            
+
             resMat = resize_matrix(mat, newSizes)
             resMat = resize_matrix(mat, newSizes, resType)
             resMat = resize_matrix(mat, newSizes, resType, padding)
@@ -104,21 +104,33 @@ xmlns:scilab="http://www.scilab.org" xml:id="resize_matrix" xml:lang="en">
                 <term>padding</term>
                 <listitem>
                     <para>
-                        optional scalar of same type as <varname>mat</varname>, specifying the content to set in elements created when the size along a dimension is increased. The default padding is done with <literal>0</literal> (real or complex decimals, encoded integers, polynomials), or <literal>""</literal> (text), or <literal>%F</literal> (booleans).
+                        optional scalar of same type as <varname>mat</varname>, specifying the
+                        content to set in elements created when the size along a dimension is
+                        increased. The default padding is done with <literal>0</literal> (real or
+                        complex decimals, encoded integers, polynomials), or <literal>""</literal>
+                        (text), or <literal>%F</literal> (booleans).
                     </para>
                     <para>
-                        When <varname>mat</varname> and <varname>padding</varname> types do not match, scilab tries to convert the <varname>padding</varname>'s one
+                        When <varname>mat</varname> and <varname>padding</varname> types do not
+                        match, scilab tries to convert the <varname>padding</varname>'s one
                     </para>
                     <para>
-                        For polynomials, the varname of the padding is forced to the <varname>mat</varname>'s one.
+                        For polynomials, the varname of the padding is forced to the
+                        <varname>mat</varname>'s one.
                     </para>
                 </listitem>
             </varlistentry>
             <varlistentry>
                 <term>resType</term>
                 <listitem>
-                    <para>optional text word specifying the data type into which the resized matrix must be converted. "boolean", "constant", "string", "int8", "uint8", "int16", "uint16", "int32", and "uint32" are supported.</para>
-                    <para>Type conversion is supported neither for Polynomials nor for hypermatrix of text.</para>
+                    <para>
+                        optional text word specifying the data type into which the resized matrix
+                        must be converted. "boolean", "constant", "string", "int8", "uint8", "int16",
+                        "uint16", "int32", "uint32", "int64", and "uint64" are supported.</para>
+                    <para>
+                        Type conversion is supported neither for Polynomials nor for hypermatrix
+                        of text.
+                    </para>
                 </listitem>
             </varlistentry>
             <varlistentry>
@@ -132,12 +144,16 @@ xmlns:scilab="http://www.scilab.org" xml:id="resize_matrix" xml:lang="en">
     <refsection role="description">
         <title>Description</title>
         <para>
-            Creates a matrix of sizes <literal>[nbRows, nbCols]</literal> or <literal>newSizes</literal>, or an hypermatrix of sizes <literal>newSizes</literal>.
-            If for a dimension the new size is smaller than the initial one, the matrix is cropped. If the size is increased, the matrix/hypermatrix is padded.
-            The number of dimensions can be increased. Conversely, Scilab automatically squeezes highest dimensions with size kept or set to 1 (singletons).
+            Creates a matrix of sizes <literal>[nbRows, nbCols]</literal> or
+            <literal>newSizes</literal>, or an hypermatrix of sizes <literal>newSizes</literal>.
+            If for a dimension the new size is smaller than the initial one, the matrix is cropped.
+            If the size is increased, the matrix/hypermatrix is padded.
+            The number of dimensions can be increased. Conversely, Scilab automatically squeezes
+            highest dimensions with size kept or set to 1 (singletons).
         </para>
         <para>
-            The type of the result may be changed by specifying the <literal>resType</literal> argument, with restrictions given above.
+            The type of the result may be changed by specifying the <literal>resType</literal>
+            argument, with restrictions given above.
         </para>
     </refsection>
     <refsection role="examples">
@@ -233,10 +249,27 @@ resize_matrix(P, [3 3 2], "", %z)
         <revhistory>
             <revision>
                 <revnumber>5.5.0</revnumber>
-                <revremark>Polynomials and Hypermatrices are now accepted.
-                    Custom padding can now be provided.
-                    New sizes can be specified in a vector.
-                    resize_matrix with no parameters displays examples (demo).
+                <revremark>
+                    <itemizedlist>
+                        <listitem>
+                            Polynomials and Hypermatrices are now accepted.
+                        </listitem>
+                        <listitem>
+                            A custom padding can now be provided.
+                        </listitem>
+                        <listitem>
+                            New sizes can be specified in a vector.
+                        </listitem>
+                        <listitem>
+                            resize_matrix() with no parameters displays examples (demo).
+                        </listitem>
+                    </itemizedlist>
+                </revremark>
+            </revision>
+            <revision>
+                <revnumber>6.0.1</revnumber>
+                <revremark>The <literal>resType</literal> option is extended to the new
+                <literal>int64</literal> and <literal>uint64</literal> integer types.
                 </revremark>
             </revision>
         </revhistory>
index b665223..fb1419d 100644 (file)
@@ -2,7 +2,7 @@
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2008 - INRIA - Jean-Baptiste SILVY
- * Copyright (C) 2013, 2016 - Samuel GOUGEON
+ * Copyright (C) 2013, 2016, 2017 - Samuel GOUGEON
  *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
  *
@@ -44,7 +44,8 @@
             <varlistentry>
                 <term>mat</term>
                 <listitem>
-                    <para>Matrice à retailler, de type booléens, entiers encodés, décimaux (réels ou complexes), polynômes, ou texte
+                    <para>Matrice à retailler, de type booléens, entiers encodés, décimaux (réels
+                    ou complexes), polynômes, ou texte
                     </para>
                 </listitem>
             </varlistentry>
                         Pour conserver une taille à la taille actuelle, indiquer -1.
                     </para>
                     <para>
-                        S'il est plus court que <literal>size(mat)</literal>, il est complété avec des 1. Exemple: si <varname>mat</varname> telle que <literal>size(mat)==[ 4 3 3 2]</literal> est fournie, et <literal>newSizes=[6 2]</literal> est spécifié, <literal>newSizes = [6 2 1 1]</literal> sera utilisé.
+                        S'il est plus court que <literal>size(mat)</literal>, il est complété avec
+                        des 1. Exemple: si <varname>mat</varname> telle que
+                        <literal>size(mat)==[ 4 3 3 2]</literal> est fournie, et
+                        <literal>newSizes=[6 2]</literal> est spécifié,
+                        <literal>newSizes = [6 2 1 1]</literal> sera utilisé.
                     </para>
                     <para>
-                        Si <varname>newSizes</varname> est plus long que <literal>size(mat)</literal> avec <literal>newSizes($)>1</literal>, une ou plusieurs dimensions sont ajoutées à <varname>mat</varname>. Exemple: si <varname>mat</varname> telle que <literal>size(mat)==[ 4 3 ]</literal> est fournie avec <literal>newSizes=[6 2 2]</literal>, le résultat sera une hypermatrice de 2 pages, la seconde étant complètement initialisée.
+                        Si <varname>newSizes</varname> est plus long que <literal>size(mat)</literal>
+                        avec <literal>newSizes($)>1</literal>, une ou plusieurs dimensions sont
+                        ajoutées à <varname>mat</varname>. Exemple: si <varname>mat</varname> telle
+                        que <literal>size(mat)==[ 4 3 ]</literal> est fournie avec
+                        <literal>newSizes=[6 2 2]</literal>, le résultat sera une hypermatrice de
+                        2 pages, la seconde étant complètement initialisée.
                     </para>
                     <para>
                         <literal>newSizes = [nbRows, nbCols]</literal> peut être utilisé pour une matrice.
             <varlistentry>
                 <term>resType</term>
                 <listitem>
-                    <para>option indiquant le type en lequel la matrice/hypermatrice retaillée doit être convertie. resType peut être "boolean", "constant", "string", "int8", "uint8", "int16", "uint16", "int32", and "uint32".</para>
-                    <para>Aucune conversion n'est admise pour une matrice ou hypermatrice de polynômes, ni pour une hypermatrice de texte.</para>
+                    <para>
+                    option indiquant le type en lequel la matrice/hypermatrice retaillée doit
+                    être convertie. resType peut être "boolean", "constant", "string", "int8",
+                    "uint8", "int16", "uint16", "int32", "uint32", "int64", ou "uint64".
+                    </para>
+                    <para>
+                        Aucune conversion n'est admise pour une matrice ou hypermatrice de polynômes,
+                        ni pour une hypermatrice de texte.
+                    </para>
                 </listitem>
             </varlistentry>
             <varlistentry>
                 <term>padding</term>
                 <listitem>
                     <para>
-                        option de même type que <varname>mat</varname>, spécifiant le contenu scalaire à affecter aux éléments ajoutés à <varname>mat</varname> lorsque sa taille selon une dimension est augmentée. La valeur utilisée par défaut est <literal>0</literal> (réels, complexes, entiers encodés, polynômes), ou <literal>""</literal> (texte), ou <literal>%F</literal> (booléens).
+                        option de même type que <varname>mat</varname>, spécifiant le contenu
+                        scalaire à affecter aux éléments ajoutés à <varname>mat</varname> lorsque sa
+                        taille selon une dimension est augmentée. La valeur utilisée par défaut est
+                        <literal>0</literal> (réels, complexes, entiers encodés, polynômes),
+                        ou <literal>""</literal> (texte), ou <literal>%F</literal> (booléens).
                     </para>
                     <para>
-                        Lorsque les types de <varname>mat</varname> et <varname>padding</varname> sont distincts, Scilab tente de convertir le type de <varname>padding</varname>.
+                        Lorsque les types de <varname>mat</varname> et <varname>padding</varname>
+                        sont distincts, Scilab tente de convertir le type de <varname>padding</varname>.
                     </para>
                     <para>
-                        Pour les polynômes, le nom de l'inconnue du polynôme <varname>padding</varname> est forcé à celui de <varname>mat</varname>.
+                        Pour les polynômes, le nom de l'inconnue du polynôme <varname>padding</varname>
+                        est forcé à celui de <varname>mat</varname>.
                     </para>
                 </listitem>
             </varlistentry>
     <refsection role="description">
         <title>Description</title>
         <para>
-            Crée une matrice de taille <literal>[nbRows, nbCols]</literal> ou <literal>newSizes</literal>, ou une hypermatrice de taille <literal>newSizes</literal>.
-            Si, pour une certaine dimension, la nouvelle taille est plus petite que l'initiale, la matrice est élaguée. Si la taille est agrandie, alors de nouveaux éléments valant <literal>padding</literal> sont ajoutés à la matrice/hypermatrice.
+            Crée une matrice de taille <literal>[nbRows, nbCols]</literal> ou
+            <literal>newSizes</literal>, ou une hypermatrice de taille <literal>newSizes</literal>.
+            Si, pour une certaine dimension, la nouvelle taille est plus petite que l'initiale, la
+            matrice est élaguée. Si la taille est agrandie, alors de nouveaux éléments valant
+            <literal>padding</literal> sont ajoutés à la matrice/hypermatrice.
             Le nombre de dimensions peut être augmenté.
         </para>
         <para>
@@ -221,10 +247,28 @@ resize_matrix(P, [3 3 2], "", %z)
         <revhistory>
             <revision>
                 <revnumber>5.5.0</revnumber>
-                <revremark>Les polynômes et les hypermatrices sont désormais acceptés.
-                    La valeur affectée aux éléments d'extension peut être spécifiée.
-                    Les nouvelles tailles peuvent être spécifiées dans un vecteur.
-                    resize_matrix appelée sans paramètres affiche des exemples de démonstration.
+                <revremark>
+                    <itemizedlist>
+                        <listitem>
+                            Les polynômes et les hypermatrices sont désormais acceptés.
+                        </listitem>
+                        <listitem>
+                            La valeur affectée aux éléments d'extension peut être spécifiée.
+                        </listitem>
+                        <listitem>
+                            Les nouvelles tailles peuvent être spécifiées dans un vecteur.
+                        </listitem>
+                        <listitem>
+                            resize_matrix() appelée sans paramètres affiche des exemples de démonstration.
+                        </listitem>
+                    </itemizedlist>
+                </revremark>
+            </revision>
+            <revision>
+                <revnumber>6.0.1</revnumber>
+                <revremark>
+                    L'option <literal>resType</literal> est étendue aux nouveaux types entiers
+                    <literal>int64</literal> et <literal>uint64</literal>.
                 </revremark>
             </revision>
         </revhistory>
index a8c99df..b0ab622 100644 (file)
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2008 - INRIA - Jean-Baptiste SILVY 
+ * Copyright (C) 2008 - INRIA - Jean-Baptiste SILVY
+ * Copyright (C) 2013, 2016, 2017 - Samuel GOUGEON
  *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
  *
  * along with this program.
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="resize_matrix" xml:lang="ja">
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
+    xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
+    xmlns:scilab="http://www.scilab.org" xml:id="resize_matrix" xml:lang="ja">
     <refnamediv>
         <refname>resize_matrix</refname>
         <refpurpose>
                 <listitem>
                     <para>
                         オプションのテキストで大きさが変更された行列が変換されるデータ型を指定します.
-                        "boolean", "constant", "string", "int8", "uint8", "int16", "uint16", "int32", および "uint32"
-                        がサポートされます.
+                        "boolean", "constant", "string", "int8", "uint8", "int16", "uint16", "int32",
+                        "uint32", "int64", および "uint64" がサポートされます.
                     </para>
                     <para>多項式およびテキストのハイパー行列については型変換がサポートされません.</para>
                 </listitem>
@@ -242,12 +246,28 @@ resize_matrix(P, [3 3 2], "", %z)
             <revision>
                 <revnumber>5.5.0</revnumber>
                 <revremark>
-                    多項式とハイパー行列を利用可能になりました.
-                    カスタムパディングを指定可能となりました.
-                    新しい大きさをベクトルとして指定できます.
-                    resize_matrix に引数を付けない場合, 例(デモ)を表示します.
+                    <itemizedlist>
+                        <listitem>
+                            多項式とハイパー行列を利用可能になりました.
+                        </listitem>
+                        <listitem>
+                            カスタムパディングを指定可能となりました.
+                        </listitem>
+                        <listitem>
+                            新しい大きさをベクトルとして指定できます.
+                        </listitem>
+                        <listitem>
+                            resize_matrix() に引数を付けない場合, 例(デモ)を表示します.
+                        </listitem>
+                    </itemizedlist>
+                </revremark>
+            </revision>
+            <revision>
+                <revnumber>6.0.1</revnumber>
+                <revremark>The <literal>resType</literal> option is extended to the new
+                <literal>int64</literal> and <literal>uint64</literal> integer types.
                 </revremark>
             </revision>
         </revhistory>
     </refsection>
-</refentry>
\ No newline at end of file
+</refentry>
index 9c10a63..6df0252 100644 (file)
@@ -1,5 +1,5 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2013, 2016 - Samuel GOUGEON
+// Copyright (C) 2013, 2016, 2017 - Samuel GOUGEON
 //
 // Copyright (C) 2012 - 2016 - Scilab Enterprises
 //
@@ -262,7 +262,7 @@ function mat = resize_matrix(mat, varargin)
             error(msprintf(msg, "resize_matrix"))
         elseif resType=="string"
             mat = string(mat)
-        elseif or(resType==["int8" "int16" "int32" "uint8" "uint16" "uint32"])
+        elseif or(resType==["int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"])
             if type_0=="string"
                 mat = strtod(mat)       // strings => decimals
             end
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_15285.tst b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_15285.tst
new file mode 100644 (file)
index 0000000..e7d9f68
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - ESI - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+
+// <-- Non-regression test for bug 15285 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=15285
+//
+// <-- Short Description -->
+//resize_matrix does not manage convertion to int64 and uint64
+
+a = rand(2, 3) * 1000;
+ref = zeros(5, 5);
+ref(1:2, 1:3) = a;
+ref64 = int64(ref);
+refu64 = uint64(ref);
+assert_checkequal(resize_matrix(a, [5, 5], "int64"), ref64);
+assert_checkequal(resize_matrix(a, [5, 5], "uint64"), refu64);
diff --git a/scilab/modules/elementary_functions/tests/unit_tests/resize_matrix.dia.ref b/scilab/modules/elementary_functions/tests/unit_tests/resize_matrix.dia.ref
deleted file mode 100644 (file)
index 6ba3cdf..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
-// Copyright (C) 2016 - Samuel GOUGEON
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-// <-- CLI SHELL MODE -->
-// When one or several new sizes are 0, [] is returned:
-m = grand(3,4,"uin",0,100);
-assert_checkequal(resize_matrix(m, [0 2]), []);
-assert_checkequal(resize_matrix(m, [0 5]), []);
-assert_checkequal(resize_matrix(m, [0 -1]), []);
-assert_checkequal(resize_matrix(m, [2 0]), []);
-assert_checkequal(resize_matrix(m, [4 0]), []);
-assert_checkequal(resize_matrix(m, [-1 0]), []);
-assert_checkequal(resize_matrix(m, [0 0]), []);
-m = grand(3,4,2,"uin",0,100);
-assert_checkequal(resize_matrix(m, [0 2 3]), []);
-assert_checkequal(resize_matrix(m, [5 0 1]), []);
-assert_checkequal(resize_matrix(m, [4 4 0]), []);
-assert_checkequal(resize_matrix(m, [0 4 0]), []);
-assert_checkequal(resize_matrix(m, [0 0 0]), []);
-// Every new size <0 is kept as is:
-m = grand(3,4,"uin",0,100);
-assert_checkequal(size(resize_matrix(m, [-1 2])), [3 2]);
-assert_checkequal(size(resize_matrix(m, [-1 5])), [3 5]);
-assert_checkequal(size(resize_matrix(m, [-1 5 2])), [3 5 2]);
-assert_checkequal(size(resize_matrix(m, [2 -1])), [2 4]);
-assert_checkequal(size(resize_matrix(m, [5 -1])), [5 4]);
-assert_checkequal(size(resize_matrix(m, [2 -1 2])), [2 4 2]);
-assert_checkequal(size(resize_matrix(m, [-1 -1 2])), [3 4 2]);
-m = grand(3,4,2,"uin",0,100);
-assert_checkequal(size(resize_matrix(m, [-1 5 3])), [3 5 3]);
-assert_checkequal(size(resize_matrix(m, [2 -1 3])), [2 4 3]);
-assert_checkequal(size(resize_matrix(m, [2 5 -1])), [2 5 2]);
-assert_checkequal(size(resize_matrix(m, [-1 -1 3])), [3 4 3]);
-assert_checkequal(size(resize_matrix(m, [-1 3 -1])), [3 3 2]);
-assert_checkequal(size(resize_matrix(m, [2 -1 -1])), [2 4 2]);
-assert_checkequal(size(resize_matrix(m, [-1 3 -1])), [3 3 2]);
-m = grand(3,4,2,2,"uin",0,100);
-assert_checkequal(size(resize_matrix(m, [-1 3 3 -1])), [3 3 3 2]);
-// Trailing singletons at dims>2 are removed:
-m = grand(3,4,2,2,"uin",0,100);
-assert_checkequal(size(resize_matrix(m, [-1 3 3 1])), [3 3 3]);
-assert_checkequal(size(resize_matrix(m, [-1 3 1 1])), [3 3]);
-// -----------
-myMat =[     0.6029980    4.2470508    3.2442814    3.7427533
-1.4276821    2.6285304    4.9615955    2.0520295
-4.3037573    4.9656049    0.2502099    3.0422632  ];
-myMat = resize_matrix( myMat, 3, 3 ); // reduce the matrix size
-refMat=[0.602998,4.2470508,3.2442814;
-1.4276821,2.6285304,4.9615955;
-4.3037573,4.9656049,0.2502099];
-assert_checkequal(size(myMat), size(refMat));
-assert_checkequal(myMat, refMat);
-refMat=int32([0,4,3,0;
-1,2,4,0;
-4,4,0,0;
-0,0,0,0]);
-myMatInteger = resize_matrix( myMat, 4, 4, "int32" ); // create an integer matrix
-assert_checkequal(myMatInteger, refMat);
-booleanMat=resize_matrix( refMat, 3, 5 , "boolean");
-assert_checkequal(booleanMat, [%f %t %t %f %f; %t %t %t %f %f; %t %t %f %f %f]);
-myMatBoolean = resize_matrix( myMat, 2, 2, "boolean" );
-assert_checkequal(myMatBoolean, [%t %t; %t %t] );
-assert_checkequal(size(myMatBoolean), [2, 2]);
-myMatBoolean = resize_matrix( myMatBoolean, 3, 5 );
-assert_checkequal(myMatBoolean, [%t %t %f %f %f; %t %t %f %f %f; %f %f %f %f %f]);
-assert_checkequal(size(myMatBoolean), [3, 5]);
-myMatBoolean(1:4:9) = %t;
-myMatBoolean = resize_matrix(myMatBoolean, 3, 3);
-assert_checkequal(myMatBoolean, [%t %t %f; %t %t %f; %f %f %t]);
-// string matrix
-myMatString = ["Scilab","the";"Open Source","Scientific";"Software","Package"];
-myMatString = resize_matrix( myMatString, 3, 1 );
-assert_checkequal(myMatString, ["Scilab";"Open Source";"Software"]);
index 0626517..d471803 100644 (file)
@@ -1,11 +1,12 @@
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
-// Copyright (C) 2016 - Samuel GOUGEON
+// Copyright (C) 2016, 2017 - Samuel GOUGEON
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
 
 // When one or several new sizes are 0, [] is returned:
 m = grand(3,4,"uin",0,100);
@@ -63,13 +64,22 @@ assert_checkequal(size(myMat), size(refMat));
 
 assert_checkequal(myMat, refMat);
 
-refMat=int32([0,4,3,0;
-1,2,4,0;
-4,4,0,0;
-0,0,0,0]);
+// With encoded integers:
+itypes = [1 2 4 8 11 12 14 18];
+refMat=[
+0, 4, 3, 0
+1, 2, 4, 0
+4, 4, 0, 0
+0, 0, 0, 0];
+for i = itypes
+    ref = iconvert(refMat,i);
+    stype = typeof(ref);
+    myMatInteger = resize_matrix( myMat, 4, 4, stype ); // create an integer matrix
+    assert_checkequal(myMatInteger, ref);
+end
 
-myMatInteger = resize_matrix( myMat, 4, 4, "int32" ); // create an integer matrix
-assert_checkequal(myMatInteger, refMat);
+// With booleans:
+refMat = int32(refMat);
 booleanMat=resize_matrix( refMat, 3, 5 , "boolean");
 assert_checkequal(booleanMat, [%f %t %t %f %f; %t %t %t %f %f; %t %t %f %f %f]);