62 if(nlhs!=
NLHS || nrhs!=3){
73 SimulFunc costfuncion = &fakesimul;
74 void** prosca = &euclid_;
75 char normtype[] =
"dfn";
86 long niter = long(intn);
87 long nsim = long(intn);
91 IssmPDouble* G = xNew<IssmPDouble>(n);
for (
int i=0;i<n;i++)G[i]=Gs[i*priorn+0];
92 IssmPDouble* X = xNew<IssmPDouble>(n);
for (
int i=0;i<n;i++)X[i]=Xs[i*priorn+0];
97 long ndz = 4*n+m*(2*n+1);
98 double* dz = xNew<double>(ndz);
102 data_struct.priorn=priorn;
103 data_struct.counter=0;
108 m1qn3_(costfuncion,prosca,&ctonbe_,&ctcabe_,
109 &n,X,&f,G,&dxmin,&f1,
110 >tol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
111 &reverse,&indic,izs,rzs,(
void*)&data_struct);
115 case 1:
_printf0_(
" Convergence reached (gradient satisfies stopping criterion)\n");
break;
116 case 2:
_printf0_(
" Bad initialization\n");
break;
117 case 3:
_printf0_(
" Line search failure\n");
break;
118 case 4:
_printf0_(
" Maximum number of iterations exceeded\n");
break;
119 case 5:
_printf0_(
" Maximum number of function calls exceeded\n");
break;
120 case 6:
_printf0_(
" stopped on dxmin during line search\n");
break;
121 case 7:
_printf0_(
" <g,d> > 0 or <y,s> <0\n");
break;
122 default:
_printf0_(
" Unknown end condition\n");
126 X_out=xNew<IssmPDouble>(n);
127 for(
int i=0;i<n;i++)X_out[i]=X[i];
136 xDelete<double>(X_out);
140 _error_(
"m1qn3 is not installed");