* Bug 16623 fixed: now rand(2,2,2)^2 triggers the %s_p_s overload 84/21684/2
mottelet [Thu, 21 Jan 2021 18:35:47 +0000 (19:35 +0100)]
http://bugzilla.scilab.org/show_bug.cgi?id=16623

Change-Id: I73013af673a644025b56c5422fea304e4aea8fe0

scilab/CHANGES.md
scilab/modules/ast/src/cpp/operations/types_power.cpp
scilab/modules/ast/tests/nonreg_tests/bug_16623.tst [new file with mode: 0644]

index 2fd4a24..28937f0 100644 (file)
@@ -349,6 +349,7 @@ Bug Fixes
 * [#16553](https://bugzilla.scilab.org/16553): `unique(["" ""])` returned `["" ""]`.
 * [#16557](https://bugzilla.scilab.org/16557): `macr2tree` + `tree2code` translated `e={2}` into `"e=1"` and `e={2,"ab"}` into `"e=[2,"ab"]"`.
 * [#16559](https://bugzilla.scilab.org/16553): `isempty(A)` was true for sparse matrix of dimension 2^16 or larger.
+* [#16623](https://bugzilla.scilab.org/16623): `rand(2,2,2)^2` yielded a wrong result instead of trying to call the `%s_p_s` overload for input hypermatrices.
 
 
 ### Bugs fixed in 6.1.0:
index 7e9c020..4128790 100644 (file)
@@ -300,7 +300,7 @@ int PowerDoubleByDouble(Double* _pDouble1, Double* _pDouble2, Double** _pDoubleO
 
             return 0;
         }
-        else if (_pDouble1->getRows() == _pDouble1->getCols())
+        else if (_pDouble1->getRows() == _pDouble1->getCols() && _pDouble1->getDims() == 2)
         {
             //power of a square matrix by a scalar exponent.
             int iRet = 0;
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_16623.tst b/scilab/modules/ast/tests/nonreg_tests/bug_16623.tst
new file mode 100644 (file)
index 0000000..a87d1e6
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2021 - St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 16623 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/16483
+//
+// <-- Short Description -->
+// rand(2,2,2) ^ 2  now yields a wrong result instead of trying to call the %s_p_s overload for input hypermatrices
+
+assert_checkerror("rand(2,2,2)^2",_(["Undefined operation for the given operands.";"check or define function %s_t for overloading."]"))