<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic dtrnlspbc_init fails with TR_INVALID_OPTION in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/dtrnlspbc-init-fails-with-TR-INVALID-OPTION/m-p/1158265#M27753</link>
    <description>&lt;P&gt;It appears that the trust region optimizer can only handle cases when number of function arguments is equal to number of function values (square Jacobian).&lt;/P&gt;&lt;P&gt;In particular, in the code below (this is a&amp;nbsp;slightly modified fragment of optimization example from the MKL library package), the initialization function&amp;nbsp; dtrnlspbc_init fails (returns&amp;nbsp;TR_INVALID_OPTION(1502))&amp;nbsp;whenever m != n. In particular, if n = 3, m = 1 (a scalar function of 3 variables). Note, that this initialization function does not know anything about objective function, it succeeds whenever m = n, like m = 3, n =3 or m = 5, n = 5.&amp;nbsp; It fails if n != n.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this&amp;nbsp;expected behavior?&lt;/P&gt;&lt;P&gt;If it is not, what am I doing wrong?&lt;/P&gt;&lt;P&gt;Thanks.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;int main()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* user’s objective function */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;extern void extended_powell(MKL_INT *, MKL_INT *, double *, double *, void *);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* n - number of function variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m - dimension of function value */&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT n = 3, m = 1;&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* precisions for stop-criteria (see manual for more details) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double eps[6];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* precision of the Jacobian matrix calculation */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double jac_eps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* solution vector. contains values x for f(x) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *x = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* iter1 - maximum number of iterations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iter2 - maximum number of iterations of calculation of trial-step */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT iter1 = 1000, iter2 = 100;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initial step bound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double rs = 0.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* reverse communication interface parameter */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT RCI_Request;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* controls of rci cycle */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT successful;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* function (f(x)) value vector */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *fvec = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* jacobi matrix */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *fjac = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* lower and upper bounds */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *LW = NULL, *UP = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* number of iterations */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT iter;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* number of stop-criterion */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT st_cr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initial and final residuals */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double r1, r2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* TR solver handle */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;_TRNSPBC_HANDLE_t handle;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* cycle’s counter */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* results of input parameter checking */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT info[6];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* memory allocation flags */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT mem_error, error;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*Additional users data */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u_data m_data;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m_data.a = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m_data.sum = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* memory allocation */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mem_error = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = (double *)mkl_malloc(sizeof(double) * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (x == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fvec = (double *)mkl_malloc(sizeof(double) * m, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (fvec == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fjac = (double *)mkl_malloc(sizeof(double) * m * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (fjac == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LW = (double *)mkl_malloc(sizeof(double) * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (LW == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;UP = (double *)mkl_malloc(sizeof(double) * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (UP == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* memory allocated correctly */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mem_error = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set precisions for stop-criteria */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; 6; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;eps&lt;I&gt; = 0.00001;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set precision of the Jacobian matrix calculation */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;jac_eps = 0.00000001;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set the initial guess */&lt;BR /&gt;&amp;nbsp; &amp;nbsp; for (i = 0; i &amp;lt; n; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x&lt;I&gt; = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set initial values */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; m; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fvec&lt;I&gt; = 0.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; m * n; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fjac&lt;I&gt; = 0.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set bounds */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; n; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LW&lt;I&gt; = -1.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UP&lt;I&gt; = 1.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initialize solver (allocate memory, set initial values)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;handle &amp;nbsp; &amp;nbsp; &amp;nbsp; in/out: TR solver handle&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;n &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; number of function variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; dimension of function value&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;x &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; solution vector. contains values x for f(x)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LW &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lower bound&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;UP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; upper bound&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;eps &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; precisions for stop-criteria&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iter1 &amp;nbsp; in: &amp;nbsp; &amp;nbsp; maximum number of iterations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iter2 &amp;nbsp; in: &amp;nbsp; &amp;nbsp; maximum number of iterations of calculation of trial-step&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rs &amp;nbsp; &amp;nbsp; &amp;nbsp;in: &amp;nbsp; &amp;nbsp; initial step bound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT st = dtrnlspbc_init(&amp;amp;handle, &amp;amp;n, &amp;amp;m, x, LW, UP, eps, &amp;amp;iter1, &amp;amp;iter2, &amp;amp;rs);&lt;/P&gt;</description>
    <pubDate>Wed, 08 Apr 2020 16:31:42 GMT</pubDate>
    <dc:creator>Sh__Rustem</dc:creator>
    <dc:date>2020-04-08T16:31:42Z</dc:date>
    <item>
      <title>dtrnlspbc_init fails with TR_INVALID_OPTION</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/dtrnlspbc-init-fails-with-TR-INVALID-OPTION/m-p/1158265#M27753</link>
      <description>&lt;P&gt;It appears that the trust region optimizer can only handle cases when number of function arguments is equal to number of function values (square Jacobian).&lt;/P&gt;&lt;P&gt;In particular, in the code below (this is a&amp;nbsp;slightly modified fragment of optimization example from the MKL library package), the initialization function&amp;nbsp; dtrnlspbc_init fails (returns&amp;nbsp;TR_INVALID_OPTION(1502))&amp;nbsp;whenever m != n. In particular, if n = 3, m = 1 (a scalar function of 3 variables). Note, that this initialization function does not know anything about objective function, it succeeds whenever m = n, like m = 3, n =3 or m = 5, n = 5.&amp;nbsp; It fails if n != n.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this&amp;nbsp;expected behavior?&lt;/P&gt;&lt;P&gt;If it is not, what am I doing wrong?&lt;/P&gt;&lt;P&gt;Thanks.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;int main()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* user’s objective function */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;extern void extended_powell(MKL_INT *, MKL_INT *, double *, double *, void *);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* n - number of function variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m - dimension of function value */&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT n = 3, m = 1;&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* precisions for stop-criteria (see manual for more details) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double eps[6];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* precision of the Jacobian matrix calculation */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double jac_eps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* solution vector. contains values x for f(x) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *x = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* iter1 - maximum number of iterations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iter2 - maximum number of iterations of calculation of trial-step */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT iter1 = 1000, iter2 = 100;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initial step bound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double rs = 0.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* reverse communication interface parameter */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT RCI_Request;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* controls of rci cycle */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT successful;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* function (f(x)) value vector */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *fvec = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* jacobi matrix */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *fjac = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* lower and upper bounds */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double *LW = NULL, *UP = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* number of iterations */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT iter;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* number of stop-criterion */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT st_cr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initial and final residuals */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double r1, r2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* TR solver handle */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;_TRNSPBC_HANDLE_t handle;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* cycle’s counter */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* results of input parameter checking */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT info[6];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* memory allocation flags */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT mem_error, error;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*Additional users data */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u_data m_data;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m_data.a = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m_data.sum = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* memory allocation */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mem_error = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = (double *)mkl_malloc(sizeof(double) * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (x == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fvec = (double *)mkl_malloc(sizeof(double) * m, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (fvec == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fjac = (double *)mkl_malloc(sizeof(double) * m * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (fjac == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LW = (double *)mkl_malloc(sizeof(double) * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (LW == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;UP = (double *)mkl_malloc(sizeof(double) * n, 64);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (UP == NULL) goto end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* memory allocated correctly */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mem_error = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set precisions for stop-criteria */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; 6; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;eps&lt;I&gt; = 0.00001;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set precision of the Jacobian matrix calculation */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;jac_eps = 0.00000001;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set the initial guess */&lt;BR /&gt;&amp;nbsp; &amp;nbsp; for (i = 0; i &amp;lt; n; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x&lt;I&gt; = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set initial values */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; m; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fvec&lt;I&gt; = 0.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; m * n; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fjac&lt;I&gt; = 0.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* set bounds */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; n; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LW&lt;I&gt; = -1.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UP&lt;I&gt; = 1.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initialize solver (allocate memory, set initial values)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;handle &amp;nbsp; &amp;nbsp; &amp;nbsp; in/out: TR solver handle&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;n &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; number of function variables&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; dimension of function value&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;x &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; solution vector. contains values x for f(x)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LW &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lower bound&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;UP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; upper bound&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;eps &amp;nbsp; &amp;nbsp; in: &amp;nbsp; &amp;nbsp; precisions for stop-criteria&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iter1 &amp;nbsp; in: &amp;nbsp; &amp;nbsp; maximum number of iterations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iter2 &amp;nbsp; in: &amp;nbsp; &amp;nbsp; maximum number of iterations of calculation of trial-step&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rs &amp;nbsp; &amp;nbsp; &amp;nbsp;in: &amp;nbsp; &amp;nbsp; initial step bound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT st = dtrnlspbc_init(&amp;amp;handle, &amp;amp;n, &amp;amp;m, x, LW, UP, eps, &amp;amp;iter1, &amp;amp;iter2, &amp;amp;rs);&lt;/P&gt;</description>
      <pubDate>Wed, 08 Apr 2020 16:31:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/dtrnlspbc-init-fails-with-TR-INVALID-OPTION/m-p/1158265#M27753</guid>
      <dc:creator>Sh__Rustem</dc:creator>
      <dc:date>2020-04-08T16:31:42Z</dc:date>
    </item>
    <item>
      <title>I have used DTRNLSP for</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/dtrnlspbc-init-fails-with-TR-INVALID-OPTION/m-p/1158266#M27754</link>
      <description>&lt;P&gt;I have used DTRNLSP for dozens of NLS (nonlinear least squares) problems where the number of observations exceeds the number of model coefficients. For example, the &lt;A href="https://www.itl.nist.gov/div898/strd/nls/nls_main.shtml"&gt;NIST Hahn1 test problem&lt;/A&gt;, with m = 236 observations and n = 7 coefficients.&lt;/P&gt;&lt;P&gt;Note, however, that the trust region method is designed for minimizing F(x), where the dimension m of F is ≥ the dimension n of x. See, for example,&amp;nbsp;https://software.intel.com/en-us/mkl-developer-reference-c-nonlinear-least-squares-problem-without-constraints#4EA75446-AA99-423C-B497-00D86E1CDEFE . Thus, if you set m = 1 and n = 3, this condition is violated.&lt;/P&gt;&lt;P&gt;If you want help finding more about this or related&amp;nbsp;bugs, please provide the complete source code as an attachment (include data files, if any, and instructions to build, and state the compiler version and options used to build).&lt;/P&gt;</description>
      <pubDate>Fri, 10 Apr 2020 02:44:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/dtrnlspbc-init-fails-with-TR-INVALID-OPTION/m-p/1158266#M27754</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2020-04-10T02:44:00Z</dc:date>
    </item>
  </channel>
</rss>

