* Bug #14067 fixed - 3rd argument of fsolve() became mandatory 83/18083/4
Simon Marchetto [Fri, 15 Apr 2016 08:55:11 +0000 (10:55 +0200)]
* Bug #14067 fixed - 3rd argument of fsolve() became mandatory

Change-Id: I67968cd47393cbd1a25f4b6ee9a507adc5aa24ad

scilab/CHANGES
scilab/modules/optimization/sci_gateway/cpp/sci_fsolve.cpp
scilab/modules/optimization/tests/nonreg_tests/bug_14067.dia.ref [new file with mode: 0644]
scilab/modules/optimization/tests/nonreg_tests/bug_14067.tst [new file with mode: 0644]

index 6ee8fbc..e082e50 100644 (file)
@@ -385,6 +385,8 @@ In 6.0.0:
 
 * Bug #14035 fixed - ndgrid did not manage all homogeneous data type (booleans, integers, polynomials, rationals, strings, [])
 
+* Bug #14067 fixed - 3rd argument of fsolve() became mandatory
+
 * Bug #14099 fixed - sci2exp macro was fixed to avoid "a+[] Warning". string(polynomials|rationals) had badly formated outputs and was not vectorized
 
 * Bug #14111 fixed - modified lib function to detect Scilab version 5 libraries and give proper error messages
index 9f244d5..04c61ec 100644 (file)
@@ -216,22 +216,6 @@ types::Function::ReturnValue sci_fsolve(types::typed_list &in, int _iRetCount, t
                 return types::Function::Error;
             }
         }
-        else if (in[2]->isDouble() && in.size() == 3)
-        {
-            pDblTol = in[2]->getAs<types::Double>();
-            if (pDblTol->isScalar() == false)
-            {
-                Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "fsolve", 3);
-                return types::Function::Error;
-            }
-
-            dTol = pDblTol->get(0);
-        }
-        else
-        {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A scalar or a function expected.\n"), "fsolve", 3);
-            return types::Function::Error;
-        }
     }
 
     if (in.size() == 4)
@@ -249,7 +233,7 @@ types::Function::ReturnValue sci_fsolve(types::typed_list &in, int _iRetCount, t
         }
         else
         {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A scalar or a function expected.\n"), "fsolve", 4);
+            Scierror(999, _("%s: Wrong type for input argument #%d: A real expected.\n"), "fsolve", 4);
             return types::Function::Error;
         }
     }
diff --git a/scilab/modules/optimization/tests/nonreg_tests/bug_14067.dia.ref b/scilab/modules/optimization/tests/nonreg_tests/bug_14067.dia.ref
new file mode 100644 (file)
index 0000000..daf6684
--- /dev/null
@@ -0,0 +1,12 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+function fx = foo(x)
+    fx = exp(-2*x)-x*x*x+6*x*x
+endfunction
+ierr = execstr('[x, fx, info] = fsolve(10, foo, [], 1.0d-12)', 'errcatch');
+assert_checkequal(ierr, 0);
diff --git a/scilab/modules/optimization/tests/nonreg_tests/bug_14067.tst b/scilab/modules/optimization/tests/nonreg_tests/bug_14067.tst
new file mode 100644 (file)
index 0000000..f336d89
--- /dev/null
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+function fx = foo(x)
+    fx = exp(-2*x)-x*x*x+6*x*x
+endfunction
+
+ierr = execstr('[x, fx, info] = fsolve(10, foo, [], 1.0d-12)', 'errcatch');
+assert_checkequal(ierr, 0);
+