* Bug 16015 fixed: intg(a,b,f) called f(x) with x outside domain 05/20905/6
St├ęphane Mottelet [Fri, 22 Mar 2019 17:24:21 +0000 (18:24 +0100)]
http://bugzilla.scilab.org/show_bug.cgi?id=16015

Change-Id: I3123ca77777d16f25b645c99de83bb88cc3688ba

scilab/CHANGES.md
scilab/modules/differential_equations/sci_gateway/cpp/sci_intg.cpp
scilab/modules/differential_equations/tests/nonreg_tests/bug_16015.tst [new file with mode: 0644]

index 53e6532..ec61cc1 100644 (file)
@@ -161,6 +161,7 @@ Bug Fixes
 * [#16012](http://bugzilla.scilab.org/show_bug.cgi?id=16012): `[struct() struct()]` crashed Scilab.
 * [#16013](http://bugzilla.scilab.org/show_bug.cgi?id=16013): Load previously saved environment with "File/Load environment" menu failed.
 * [#16014](http://bugzilla.scilab.org/show_bug.cgi?id=16014): after `x.a=1; x(:)=[]` x.a was an empty list. 
+* [#16015](http://bugzilla.scilab.org/show_bug.cgi?id=116015): `intg(a,b,f)` called f(x) with x outside [a,b].
 * [#16021](http://bugzilla.scilab.org/show_bug.cgi?id=16021): `tand([-90 90])` answered [Nan Nan] instead of [-Inf, Inf]. `cotd([-90 90])` answered [Nan Nan] instead of [0 0]. `1 ./cosd([-90 90])` answered [Inf -Inf] instead of [Inf Inf].
 * [#16071](http://bugzilla.scilab.org/show_bug.cgi?id=16071): `prettyprint(complex(1,%nan))` omitted the "+" in `1 + Nani`. It printed positive exponents with a useless "+". For any input nul polynomial, the string result never included the name of the variable. Default input arguments could not be skipped. ExportFormat was uselessly case-sensitive. For tex|latex: for text input, $ \ % & { } ~ and ^ special characters were not protected ; spaces were not protected, all words were concatenated ; for polynomials and rationals, the result string could be extremely long and not easily wrappable. For MathML: "<" was not protected ; <mi></mi> were missing for text input ; <mtable>, </mtable>, <mtr>, </mtr>, <mtd>, <mfenced> and </mfenced> tags were not wrapped and could not be indented. Delimiters: "" was not documented as possible value ; ")" was wrongly documented. Dynamical linear systems were not documented as possible input.
 * [#16072](http://bugzilla.scilab.org/show_bug.cgi?id=16072): `prettyprint()` did not actually support input encoded integers.
index 11e7c05..ebce3a4 100644 (file)
@@ -123,7 +123,7 @@ types::Function::ReturnValue sci_intg(types::typed_list &in, int _iRetCount, typ
         deFunctionsManager.setFFunction(pCall);
 
         // check function
-        double t = 1;
+        double t = pdA;
         double ret = intg_f(&t);
         /* if (ret == 0)
         {
diff --git a/scilab/modules/differential_equations/tests/nonreg_tests/bug_16015.tst b/scilab/modules/differential_equations/tests/nonreg_tests/bug_16015.tst
new file mode 100644 (file)
index 0000000..6a5260d
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - 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 16015 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/16015
+//
+// <-- Short Description -->
+// intg(a,b,f)  makes a first calls to g(x) with x=1 regardless of a and b
+
+deff('y=f(t)','if t<2 | t>3 then error(''bad argument'') else y=1 end');
+intg(2,3,f)