English must be imposed because of warnings 06/14306/2
Vincent COUVERT [Wed, 2 Apr 2014 20:42:42 +0000 (22:42 +0200)]
Change-Id: I1296d594e079ce77021e0c5da330747ab2b143b8

scilab/modules/optimization/tests/nonreg_tests/bug_3770.dia.ref
scilab/modules/optimization/tests/nonreg_tests/bug_3770.tst
scilab/modules/optimization/tests/nonreg_tests/bug_4083.dia.ref
scilab/modules/optimization/tests/nonreg_tests/bug_4083.tst

index 4603386..246b88a 100644 (file)
@@ -5,6 +5,7 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
 // <-- Non-regression test for bug 3770 -->
 //
 // <-- Bugzilla URL -->
 //    "qld" returns a error with scilab 5.0.2 and not with scilab 4.1.2
 // =============================================================================
 function [y]=cif4(x)
-  y(1)=127.d0-2.d0*x(1)^2-3.d0*x(2)^4-x(3)-4.d0*x(4)^2 -5.d0*x(5);
-  y(2)=282.d0-7.d0*x(1)-3.d0*x(2)-10.d0*x(3)^2-x(4)+x(5);
-  y(3)=196.d0-23.d0*x(1)-x(2)^2-6.d0*x(6)^2+8.d0*x(7);
-  y(4)=-4.d0*x(1)^2-x(2)^2+3.d0*x(1)*x(2)-2.d0*x(3)^2-5.d0*x(6) +11.d0*x(7);
+    y(1)=127.d0-2.d0*x(1)^2-3.d0*x(2)^4-x(3)-4.d0*x(4)^2 -5.d0*x(5);
+    y(2)=282.d0-7.d0*x(1)-3.d0*x(2)-10.d0*x(3)^2-x(4)+x(5);
+    y(3)=196.d0-23.d0*x(1)-x(2)^2-6.d0*x(6)^2+8.d0*x(7);
+    y(4)=-4.d0*x(1)^2-x(2)^2+3.d0*x(1)*x(2)-2.d0*x(3)^2-5.d0*x(6) +11.d0*x(7);
 endfunction
 // =============================================================================
 function [y]=objf4(x)
-  y=(x(1)-10.d0)^2+5.d0*(x(2)-12.d0)^2+x(3)^4+3.d0*(x(4) ...
-     -11.d0)^2+10.d0*x(5)^6+7.d0*x(6)^2+x(7)^4-4.d0*x(6) ...
-     *x(7)-10.d0*x(6)-8.d0*x(7);
+    y=(x(1)-10.d0)^2+5.d0*(x(2)-12.d0)^2+x(3)^4+3.d0*(x(4) ...
+    -11.d0)^2+10.d0*x(5)^6+7.d0*x(6)^2+x(7)^4-4.d0*x(6) ...
+    *x(7)-10.d0*x(6)-8.d0*x(7);
 endfunction
-// ============================================================================= 
+// =============================================================================
 function [x,fx,ci,lambda,info,iter]=sqp(x,objf,cif,lb,ub,ni,maxiter,tol)
-  n = length(x);
-  x = max(x,lb);
-  x = min(x,ub);
-  iter = 0;
-  fx = objf(x);
-  g = numdiff(objf,x)';
-  H = eye(n,n);
-  if (ni > 0) then 
-    ci = cif(x)
-    if (length(ci) ~= ni) then 
-      error('Ci pas de longueur ni')
-    end
-    A = numdiff(cif,x)
-  else
-    ci = [];
-    A = [];
-  end
-  [n1 n2] = size(A);
-  lambda = 100*ones(n1,1);
-  lambda = zeros(ni,1);
-  qp_iter = 1;
-  alpha = 1;
-  info = 0;
-  t0 = norm(g -A'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
-  logic_t2 = and(ci >= -tol);
-  logic_t3 = and(lambda >=0);
-  t4 = norm(lambda .*ci);
-  if( logic_t2 & logic_t3 & max(t0,t4) < tol) then 
-    break
-  end
-  eta = 0.25;
-  tau = 0.5;
-  for iter = 1:maxiter
-    dinf = lb-x;
-    dsup = ub-x;
-    [d,lambda_qp,info_qp]=qld(H,g,-A,ci,dinf,dsup,0,tol);
-    if (info_qp ~=0) then 
-      info = 1000 + info_qp;
-      break
+    n = length(x);
+    x = max(x,lb);
+    x = min(x,ub);
+    iter = 0;
+    fx = objf(x);
+    g = numdiff(objf,x)';
+    H = eye(n,n);
+    if (ni > 0) then
+        ci = cif(x)
+        if (length(ci) ~= ni) then
+            error("Ci pas de longueur ni")
+        end
+        A = numdiff(cif,x)
+    else
+        ci = [];
+        A = [];
     end
-    mu = 1/(sqrt(%eps) + norm(lambda,%inf));
-    cia = ci(ci < - tol );
-    phi = fx + norm(cia,1)/mu;
-    D_phi = g'*d - norm(cia,1)/mu;
+    [n1 n2] = size(A);
+    lambda = 100*ones(n1,1);
+    lambda = zeros(ni,1);
+    qp_iter = 1;
     alpha = 1;
-    while(1)
-      x_new = x + alpha*d;
-      obj_new = objf(x_new);
-      ci_new = cif(x_new);
-      cia_new = ci_new(ci_new < -tol);
-      phi_new = obj_new + norm(cia_new,1)/mu;
-      phi_armijo = phi + eta*alpha*D_phi;
-      if (phi_new <= phi_armijo) then 
+    info = 0;
+    t0 = norm(g -A'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
+    logic_t2 = and(ci >= -tol);
+    logic_t3 = and(lambda >=0);
+    t4 = norm(lambda .*ci);
+    if( logic_t2 & logic_t3 & max(t0,t4) < tol) then
         break
-      else
-        alpha = 0.45*alpha;
     end
-  end
-  lambda = lambda + alpha*(lambda_qp(1:ni) - lambda);
-  g_new = numdiff(objf,x_new)'; 
-  if(ni>0) then 
-    A_new = numdiff(cif,x_new);
-  else
-    A_new = [];
-  end
-  t0 = norm(g_new -A_new'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
-  logic_t2 = and(ci_new >= -tol);
-  logic_t3 = and(lambda >=0);
-  t4 = norm(lambda .*ci);
-  if( logic_t2 & logic_t3 & max(t0,t4) < tol) then
-    break
-  end
-  y = g_new - g;
-  if(~isempty(A)) then 
-    t = ((A_new-A)'*lambda);
-    y = y - t;
-  end
-  delx = x_new - x;
-  if (norm(delx) < tol*norm(x)) then
-    info = 101;
-    break
-  end
-  d1 = delx'*H*delx;
-  t1 = 0.2*d1;
-  t2 = delx'*y;
-  if (t2<t1) then
-    theta = 0.8*d1/(d1-t2);
-  else
-    theta = 1;
-  end
-  r = theta*y + (1-theta)*H*delx;
-  d2 = delx'*r;
-  if (d1==0 | d2 ==0) then 
-    info = 102;
-    break
-  end
-  H = H -H*delx*delx'*H/d1 + r*r'/d2;
-  x = x_new;
-  fx = obj_new;
-  g = g_new;
-  ci = ci_new;
-  A = A_new;
-  end
-  if(iter>=maxiter)
-    info = 103;
-  end
+    eta = 0.25;
+    tau = 0.5;
+    for iter = 1:maxiter
+        dinf = lb-x;
+        dsup = ub-x;
+        [d,lambda_qp,info_qp]=qld(H,g,-A,ci,dinf,dsup,0,tol);
+        if (info_qp ~=0) then
+            info = 1000 + info_qp;
+            break
+        end
+        mu = 1/(sqrt(%eps) + norm(lambda,%inf));
+        cia = ci(ci < - tol );
+        phi = fx + norm(cia,1)/mu;
+        D_phi = g'*d - norm(cia,1)/mu;
+        alpha = 1;
+        while(1)
+            x_new = x + alpha*d;
+            obj_new = objf(x_new);
+            ci_new = cif(x_new);
+            cia_new = ci_new(ci_new < -tol);
+            phi_new = obj_new + norm(cia_new,1)/mu;
+            phi_armijo = phi + eta*alpha*D_phi;
+            if (phi_new <= phi_armijo) then
+                break
+            else
+                alpha = 0.45*alpha;
+            end
+        end
+        lambda = lambda + alpha*(lambda_qp(1:ni) - lambda);
+        g_new = numdiff(objf,x_new)';
+        if(ni>0) then
+            A_new = numdiff(cif,x_new);
+        else
+            A_new = [];
+        end
+        t0 = norm(g_new -A_new'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
+        logic_t2 = and(ci_new >= -tol);
+        logic_t3 = and(lambda >=0);
+        t4 = norm(lambda .*ci);
+        if( logic_t2 & logic_t3 & max(t0,t4) < tol) then
+            break
+        end
+        y = g_new - g;
+        if(~isempty(A)) then
+            t = ((A_new-A)'*lambda);
+            y = y - t;
+        end
+        delx = x_new - x;
+        if (norm(delx) < tol*norm(x)) then
+            info = 101;
+            break
+        end
+        d1 = delx'*H*delx;
+        t1 = 0.2*d1;
+        t2 = delx'*y;
+        if (t2<t1) then
+            theta = 0.8*d1/(d1-t2);
+        else
+            theta = 1;
+        end
+        r = theta*y + (1-theta)*H*delx;
+        d2 = delx'*r;
+        if (d1==0 | d2 ==0) then
+            info = 102;
+            break
+        end
+        H = H -H*delx*delx'*H/d1 + r*r'/d2;
+        x = x_new;
+        fx = obj_new;
+        g = g_new;
+        ci = ci_new;
+        A = A_new;
+    end
+    if(iter>=maxiter)
+        info = 103;
+    end
 endfunction
 // =============================================================================
 n = 7;
@@ -144,69 +145,69 @@ maxit = 20;
 tol = 1e-3;
 // =============================================================================
 [x,fx,ci,lambda_qp,info,iter]=sqp(x,objf4,cif4,lb,ub,ni,maxit,tol);
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
 if size(x) <> [7 1] then bugmes();quit;end
 if size(fx) <> [1 1] then bugmes();quit;end
index f3ce3b4..ff804bf 100644 (file)
@@ -6,6 +6,7 @@
 // =============================================================================
 
 // <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
 
 // <-- Non-regression test for bug 3770 -->
 //
 //    "qld" returns a error with scilab 5.0.2 and not with scilab 4.1.2
 // =============================================================================
 function [y]=cif4(x)
-  y(1)=127.d0-2.d0*x(1)^2-3.d0*x(2)^4-x(3)-4.d0*x(4)^2 -5.d0*x(5);
-  y(2)=282.d0-7.d0*x(1)-3.d0*x(2)-10.d0*x(3)^2-x(4)+x(5);
-  y(3)=196.d0-23.d0*x(1)-x(2)^2-6.d0*x(6)^2+8.d0*x(7);
-  y(4)=-4.d0*x(1)^2-x(2)^2+3.d0*x(1)*x(2)-2.d0*x(3)^2-5.d0*x(6) +11.d0*x(7);
+    y(1)=127.d0-2.d0*x(1)^2-3.d0*x(2)^4-x(3)-4.d0*x(4)^2 -5.d0*x(5);
+    y(2)=282.d0-7.d0*x(1)-3.d0*x(2)-10.d0*x(3)^2-x(4)+x(5);
+    y(3)=196.d0-23.d0*x(1)-x(2)^2-6.d0*x(6)^2+8.d0*x(7);
+    y(4)=-4.d0*x(1)^2-x(2)^2+3.d0*x(1)*x(2)-2.d0*x(3)^2-5.d0*x(6) +11.d0*x(7);
 endfunction
 // =============================================================================
 function [y]=objf4(x)
-  y=(x(1)-10.d0)^2+5.d0*(x(2)-12.d0)^2+x(3)^4+3.d0*(x(4) ...
-     -11.d0)^2+10.d0*x(5)^6+7.d0*x(6)^2+x(7)^4-4.d0*x(6) ...
-     *x(7)-10.d0*x(6)-8.d0*x(7);
+    y=(x(1)-10.d0)^2+5.d0*(x(2)-12.d0)^2+x(3)^4+3.d0*(x(4) ...
+    -11.d0)^2+10.d0*x(5)^6+7.d0*x(6)^2+x(7)^4-4.d0*x(6) ...
+    *x(7)-10.d0*x(6)-8.d0*x(7);
 endfunction
-// ============================================================================= 
+// =============================================================================
 function [x,fx,ci,lambda,info,iter]=sqp(x,objf,cif,lb,ub,ni,maxiter,tol)
-  n = length(x);
-  x = max(x,lb);
-  x = min(x,ub);
-  iter = 0;
-  fx = objf(x);
-  g = numdiff(objf,x)';
-  H = eye(n,n);
-  if (ni > 0) then 
-    ci = cif(x)
-    if (length(ci) ~= ni) then 
-      error('Ci pas de longueur ni')
-    end
-    A = numdiff(cif,x)
-  else
-    ci = [];
-    A = [];
-  end
-
-  [n1 n2] = size(A);
-
-  lambda = 100*ones(n1,1);
-  lambda = zeros(ni,1);
-
-  qp_iter = 1;
-  alpha = 1;
-
-  info = 0;
-
-  t0 = norm(g -A'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
-  logic_t2 = and(ci >= -tol);
-  logic_t3 = and(lambda >=0);
-  
-  t4 = norm(lambda .*ci);
-
-  if( logic_t2 & logic_t3 & max(t0,t4) < tol) then 
-    break
-  end
-
-  eta = 0.25;
-  tau = 0.5;
-
-  for iter = 1:maxiter
-    dinf = lb-x;
-    dsup = ub-x;
-    [d,lambda_qp,info_qp]=qld(H,g,-A,ci,dinf,dsup,0,tol);
-  
-    if (info_qp ~=0) then 
-      info = 1000 + info_qp;
-      break
+    n = length(x);
+    x = max(x,lb);
+    x = min(x,ub);
+    iter = 0;
+    fx = objf(x);
+    g = numdiff(objf,x)';
+    H = eye(n,n);
+    if (ni > 0) then
+        ci = cif(x)
+        if (length(ci) ~= ni) then
+            error("Ci pas de longueur ni")
+        end
+        A = numdiff(cif,x)
+    else
+        ci = [];
+        A = [];
     end
 
-    mu = 1/(sqrt(%eps) + norm(lambda,%inf));
-    cia = ci(ci < - tol );
-    phi = fx + norm(cia,1)/mu;
-    D_phi = g'*d - norm(cia,1)/mu;
+    [n1 n2] = size(A);
+
+    lambda = 100*ones(n1,1);
+    lambda = zeros(ni,1);
+
+    qp_iter = 1;
     alpha = 1;
-    while(1)
-      x_new = x + alpha*d;
-      obj_new = objf(x_new);
-      ci_new = cif(x_new);
-      cia_new = ci_new(ci_new < -tol);
-      phi_new = obj_new + norm(cia_new,1)/mu;
-      phi_armijo = phi + eta*alpha*D_phi;
-      if (phi_new <= phi_armijo) then 
+
+    info = 0;
+
+    t0 = norm(g -A'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
+    logic_t2 = and(ci >= -tol);
+    logic_t3 = and(lambda >=0);
+
+    t4 = norm(lambda .*ci);
+
+    if( logic_t2 & logic_t3 & max(t0,t4) < tol) then
         break
-      else
-        alpha = 0.45*alpha;
     end
-  end
-  
-  lambda = lambda + alpha*(lambda_qp(1:ni) - lambda);
-  g_new = numdiff(objf,x_new)'; 
-
-  if(ni>0) then 
-    A_new = numdiff(cif,x_new);
-  else
-    A_new = [];
-  end
-
-  t0 = norm(g_new -A_new'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
-  
-  logic_t2 = and(ci_new >= -tol);
-  logic_t3 = and(lambda >=0);
-  
-  t4 = norm(lambda .*ci);
-
-  if( logic_t2 & logic_t3 & max(t0,t4) < tol) then
-    break
-  end
-
-  y = g_new - g;
-
-  if(~isempty(A)) then 
-    t = ((A_new-A)'*lambda);
-    y = y - t;
-  end
-
-  delx = x_new - x;
-
-  if (norm(delx) < tol*norm(x)) then
-    info = 101;
-    break
-  end
-
-  d1 = delx'*H*delx;
-
-  t1 = 0.2*d1;
-  t2 = delx'*y;
-
-  if (t2<t1) then
-    theta = 0.8*d1/(d1-t2);
-  else
-    theta = 1;
-  end
-
-  r = theta*y + (1-theta)*H*delx;
-  d2 = delx'*r;
-
-  if (d1==0 | d2 ==0) then 
-    info = 102;
-    break
-  end
-
-  H = H -H*delx*delx'*H/d1 + r*r'/d2;
-  x = x_new;
-  fx = obj_new;
-  g = g_new;
-  ci = ci_new;
-  A = A_new;
-  end
-
-  if(iter>=maxiter)
-    info = 103;
-  end
+
+    eta = 0.25;
+    tau = 0.5;
+
+    for iter = 1:maxiter
+        dinf = lb-x;
+        dsup = ub-x;
+        [d,lambda_qp,info_qp]=qld(H,g,-A,ci,dinf,dsup,0,tol);
+
+        if (info_qp ~=0) then
+            info = 1000 + info_qp;
+            break
+        end
+
+        mu = 1/(sqrt(%eps) + norm(lambda,%inf));
+        cia = ci(ci < - tol );
+        phi = fx + norm(cia,1)/mu;
+        D_phi = g'*d - norm(cia,1)/mu;
+
+        alpha = 1;
+        while(1)
+            x_new = x + alpha*d;
+            obj_new = objf(x_new);
+            ci_new = cif(x_new);
+            cia_new = ci_new(ci_new < -tol);
+            phi_new = obj_new + norm(cia_new,1)/mu;
+            phi_armijo = phi + eta*alpha*D_phi;
+            if (phi_new <= phi_armijo) then
+                break
+            else
+                alpha = 0.45*alpha;
+            end
+        end
+
+        lambda = lambda + alpha*(lambda_qp(1:ni) - lambda);
+
+        g_new = numdiff(objf,x_new)';
+
+        if(ni>0) then
+            A_new = numdiff(cif,x_new);
+        else
+            A_new = [];
+        end
+
+        t0 = norm(g_new -A_new'*lambda);   // t0 = norme du Langrangien df/dx - lambda*dc/dx
+
+        logic_t2 = and(ci_new >= -tol);
+        logic_t3 = and(lambda >=0);
+
+        t4 = norm(lambda .*ci);
+
+        if( logic_t2 & logic_t3 & max(t0,t4) < tol) then
+            break
+        end
+
+        y = g_new - g;
+
+        if(~isempty(A)) then
+            t = ((A_new-A)'*lambda);
+            y = y - t;
+        end
+
+        delx = x_new - x;
+
+        if (norm(delx) < tol*norm(x)) then
+            info = 101;
+            break
+        end
+
+        d1 = delx'*H*delx;
+
+        t1 = 0.2*d1;
+        t2 = delx'*y;
+
+        if (t2<t1) then
+            theta = 0.8*d1/(d1-t2);
+        else
+            theta = 1;
+        end
+
+        r = theta*y + (1-theta)*H*delx;
+        d2 = delx'*r;
+
+        if (d1==0 | d2 ==0) then
+            info = 102;
+            break
+        end
+
+        H = H -H*delx*delx'*H/d1 + r*r'/d2;
+
+        x = x_new;
+        fx = obj_new;
+        g = g_new;
+        ci = ci_new;
+        A = A_new;
+    end
+
+    if(iter>=maxiter)
+        info = 103;
+    end
 
 endfunction
 // =============================================================================
index f57d8f6..27f8aa2 100644 (file)
@@ -5,6 +5,7 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
 // <-- Non-regression test for bug 4083 -->
 //
 // <-- Bugzilla URL -->
@@ -19,16 +20,16 @@ function y = myfunction(x)
 endfunction
 x = 1;
 g = numdiff(myfunction, x);
-AVERTISSEMENT : La fonctionnalité numdiff est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature numdiff is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
 expectedJ = 3;
 assert_checkalmostequal(g, expectedJ, [], 1.d-8);
 [J, H] = derivative(myfunction, x);
-AVERTISSEMENT : La fonctionnalité derivative est obsolète.
-                Veuillez utiliser numderivative à la place.
-                Cette fonctionnalité va être définitivement supprimée dans Scilab 6.0
+WARNING: Feature derivative is obsolete.
+         Please use numderivative instead.
+         This feature will be permanently removed in Scilab 6.0
 
 expectedH = 6;
 assert_checkalmostequal(J, expectedJ, [], 1.d-8);
index 831c7c9..0074063 100644 (file)
@@ -6,6 +6,7 @@
 // =============================================================================
 
 // <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
 
 // <-- Non-regression test for bug 4083 -->
 //