ADMB Documentation  -a65f1c97
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
test_trust.cpp
Go to the documentation of this file.
1 /*
2  * $Id$
3  *
4  * Author: David Fournier
5  * Copyright (c) 2008-2012 Regents of the University of California
6  */
11 # include <fvar.hpp>
12 # include <admodel.h>
13 # include <df1b2fun.h>
14 # include <adrndeff.h>
15 double evaluate_function(const dvector& x,function_minimizer * pfmin);
16 void get_second_ders(int xs,int us,const init_df1b2vector y,dmatrix& Hess,
19 double calculate_laplace_approximation(const dvector& x,const dvector& u0,
20  const dmatrix& Hess,const dvector& _xadjoint,const dvector& _uadjoint,
21  const dmatrix& _Hessadjoint,function_minimizer * pmin);
22 
23 double calculate_importance_sample(const dvector& x,const dvector& u0,
24  const dmatrix& Hess,const dvector& _xadjoint,const dvector& _uadjoint,
25  const dmatrix& _Hessadjoint,function_minimizer * pmin);
26 
27 dmatrix choleski_decomp_positive(const dmatrix& M,double b);
28 
29 //dvector laplace_approximation_calculator::default_calculations
30  // (const dvector& _x,const double& _f,function_minimizer * pfmin)
31 
32 #if defined(USE_ADPVM)
33 
38  (const dvector& _x,const double& _f,function_minimizer * pfmin)
39 {
40  // for use when there is no separability
42  //ADUNCONST(double,f)
43  //int i,j;
44  int i;
45 
48  initial_params::reset(x); // get current x values into the model
50 
51  /*
52  initial_params::set_active_only_random_effects();
53  int lmn_flag=0;
54  if (ad_comm::time_flag)
55  {
56  if (ad_comm::ptm1)
57  {
58  ad_comm::ptm1->get_elapsed_time_and_reset();
59  }
60  if (ad_comm::ptm)
61  {
62  ad_comm::ptm->get_elapsed_time_and_reset();
63  }
64  }
65  if (ad_comm::time_flag)
66  {
67  if (ad_comm::ptm)
68  {
69  double time=ad_comm::ptm->get_elapsed_time();
70  if (ad_comm::global_logfile)
71  {
72  (*ad_comm::global_logfile) << " Time pos 0 "
73  << time << endl;
74  }
75  }
76  }
77 
78  double maxg;
79  double maxg_save;
80  dvector uhat_old(1,usize);
81  double f_from_1=0.0;
82  if (!inner_lmnflag)
83  {
84  if (!ADqd_flag)
85  {
86  uhat=get_uhat_quasi_newton(x,pfmin);
87  maxg=fabs(fmc1.gmax);
88  f_from_1=fmc1.bestf;
89  }
90  else
91  uhat=get_uhat_quasi_newton_qd(x,pfmin);
92  }
93  else
94  {
95  uhat=get_uhat_lm_newton(x,pfmin);
96  }
97 
98  if (ad_comm::time_flag)
99  {
100  if (ad_comm::ptm)
101  {
102  double time=ad_comm::ptm->get_elapsed_time_and_reset();
103  if (ad_comm::global_logfile)
104  {
105  (*ad_comm::global_logfile) << " Time in inner optimization "
106  << time << endl;
107  }
108  }
109  }
110  */
111  for (i=1;i<=xsize;i++)
112  {
113  y(i)=x(i);
114  }
115  for (i=1;i<=usize;i++)
116  {
117  y(i+xsize)=uhat(i);
118  }
119  int n=xsize+usize;
120  dvector xx(1,n);
121  for (i=1;i<=n;i++)
122  {
123  xx(i)=value(y(i));
124  }
125  double bestf=do_one_feval(xx,pfmin);
126  double Delta=10;
127  double lambda;
128  cout << "input Delta" << endl;
129  cin >> Delta;
130  cout << "input lambda" << endl;
131  cin >> lambda;
132  int outer_iter=0;
133  int max_iteration=10;
134  do
135  {
136  outer_iter++;
137  //int ierr=0;
138  //int niters=0;
139  dvector g(1,n);
140  dmatrix H(1,n,1,n);
141 
142  // test newton raphson
143  get_complete_hessian(H,g,pfmin);
144 
145  double tol=1.e-6;
146  //int itmax=1000;
147  //int itol=1;
148  //int iter=0;
149  //double err=0;
150  //lambda=1;
151 
152  //cout << "input Delta" << endl;
153  //cin >> Delta;
154  //cout << "input lambda" << endl;
155  //cin >> lambda;
156 
157  int i;
158 
159  for (i=1;i<=n;i++)
160  {
161  H(i,i)+=lambda;
162  }
163 
164  cout << "initial fun value - " << double(0.5)*xx*(H*xx)+xx*g;
165  double truef=do_one_feval(xx,pfmin);
166  cout << "real function value = " << truef << endl;
167  double estdiff;
168  double truediff;
169  int iflag=0;
170  int inner_iter=0;
171  //int oldbest=(int)bestf;
172  int maxfn=15;
173  dvector xret=lincg(xx,g,H,tol,Delta,pfmin,truef,estdiff,
174  truediff,bestf,iflag,inner_iter,maxfn);
175  cout << " norm(g) = " << norm(g)
176  << " norm(H*xret+g) = " << norm(H*xret+g)
177  << " norm(H*xret-g) = " << norm(H*xret-g)
178  << " inner_iter = " << inner_iter << endl;
179  if (iflag==1)
180  {
181  Delta/=5.0;
182  }
183  for (i=1;i<=n;i++)
184  {
185  y(i)+=xret(i);
186  }
187  for (i=1;i<=n;i++)
188  {
189  xx(i)=value(y(i));
190  }
191 
192  f1b2gradlist->reset();
199  }
200  while(outer_iter<=max_iteration);
201  return xx;
202 }
203 #endif
204 
211 {
212  int i,j,ip;
213 #ifdef DIAG_TIMER
214  if (ad_comm::time_flag)
215  {
216  if (ad_comm::ptm)
217  {
218  (*ad_comm::global_logfile) << " Starting Newton-Raphson "
219  << endl;
220  }
221  }
222 #endif
223  for (ip=1;ip<=num_der_blocks;ip++)
224  {
225  df1b2variable::minder=minder(ip);
226  df1b2variable::maxder=maxder(ip);
227 
228  set_u_dot(ip);
229 
230  // do we need to reallocate memory for df1b2variables?
231  check_for_need_to_reallocate(ip);
233  //cout << re_objective_function_value::pobjfun << endl;
234  //cout << re_objective_function_value::pobjfun->ptr << endl;
235  (*re_objective_function_value::pobjfun)=double(0.0);
236 
237 #if defined(USE_DDOUBLE)
238 #undef double
239  df1b2variable pen=double(0.0);
240  df1b2variable zz=double(0.0);
241 #define double dd_real
242 #else
243  df1b2variable pen=0.0;
244  df1b2variable zz=0.0;
245 #endif
247  //cout << setprecision(15) << y << endl;
249  {
250  H.initialize();
251  grad.initialize();
252  }
253 
254 #ifdef DIAG_TIMER
255  double time1 = 0;
256  if (ad_comm::time_flag)
257  {
258  if (ad_comm::ptm)
259  {
260  time1=ad_comm::ptm->get_elapsed_time();
261  }
262  }
263 #endif
264  pfmin->user_function();
265 #ifdef DIAG_TIMER
266  if (ad_comm::time_flag)
267  {
268  if (ad_comm::ptm)
269  {
271  {
272  double time=ad_comm::ptm->get_elapsed_time();
273  (*ad_comm::global_logfile) << " Time in user_function() "
274  << ip << " " << time-time1 << endl;
275  }
276  }
277  }
278 #endif
281 
282  (*re_objective_function_value::pobjfun)+=pen;
283  (*re_objective_function_value::pobjfun)+=zz;
284 
285  //cout << setprecision(15) << *re_objective_function_value::pobjfun << endl;
286  //cout << setprecision(15) << pen << endl;
288  {
292  df1b2_gradcalc1();
293  int mind=y(1).minder;
294  int jmin=max(mind,1);
295  int jmax=min(y(1).maxder,xsize+usize);
296  for (i=1;i<=xsize+usize;i++)
297  for (j=jmin;j<=jmax;j++)
298  H(i,j)=y(i).u_bar[j-mind];
299 
300  // ****************************************************************
301  // ****************************************************************
302  // ****************************************************************
303  // temporary shit
304  /*
305  for (i=1;i<=usize;i++)
306  {
307  for (j=jmin;j<=jmax;j++)
308  {
309  //Hess(i,j-xsize)=y(i+xsize).u_bar[j-mind];
310  y(i+xsize).get_u_bar_tilde()[j-mind]=Hessadjoint(i,j-xsize);
311  }
312  }
313  cout << Hess << endl;
314  df1b2variable::passnumber=2;
315  df1b2_gradcalc1();
316 
317  df1b2variable::passnumber=3;
318  df1b2_gradcalc1();
319  */
320  // ****************************************************************
321  // ****************************************************************
322  // ****************************************************************
323  // ****************************************************************
324  for (j=jmin;j<=jmax;j++)
326  }
327  if (ip<num_der_blocks)
328  f1b2gradlist->reset();
329  }
330 
331 
332  // just to match master pvm routine
333 #ifdef DIAG_TIMER
334  if (ad_comm::time_flag)
335  {
336  if (ad_comm::ptm)
337  {
338  /*double time=*/ad_comm::ptm->get_elapsed_time();
339  }
340  }
341 #endif
342 }
343 
344 #define EPS 1.0e-14
345 
346 /*
347 int main(int argc,char * argv[])
348 {
349  int n=4;
350  dmatrix H(1,n,1,n);
351 
352  double lambda;
353  lambda=1.0;
354 
355  dvector g(1,n);
356  dvector x(1,n);
357  double tol=1.e-6;
358  int itmax=1000;
359  int itol=1;
360  int iter=0;
361  double err=0;
362  double Delta=20;
363  H.initialize();
364  lambda=1;
365 
366  g=1.0;
367  x=0.0;
368  H(1,1)=1;
369  H(2,2)=2;
370  H(3,3)=3;
371  H(4,4)=3;
372  //cout << "input lambda" << endl;
373  //cin >> lambda;
374 
375  for (int i=1;i<=n;i++)
376  {
377  H(i,i)+=lambda;
378  }
379  cout << "initial fun value - " << 0.5*x*(H*x)+x*g;
380  double truef=do_one_feval(x_k,pfmin);
381  cout << "real function value = " << truef << endl;
382  dvector xret=lincg(x,g,H,tol,Delta,truef,estdiff);
383 
384  cout << H*xret << " " << g << endl;
385  exit(0);
386 
387 }
388 */
389 
390 /*
391 dvector laplace_approximation_calculator::lincg(dvector& x,
392  dvector& c, dmatrix& H,double tol,double Delta,function_minimizer * pfmin,
393  double& truef,double& estdiff,double& truediff,double& bestf,
394  int& iflag,int& inner_iter,int maxfn)
395 {
396  iflag=0;
397  int n=c.indexmax();
398  dvector g_k(1,n);
399  dvector p_k(1,n);
400  dvector x_k(1,n);
401  dvector xbest_k(1,n);
402  double alpha_k;
403  double beta_k;
404  double n2gk=0.0;
405  x_k=0.0;
406  g_k=c;
407  //g_k=H*x+c;
408  p_k=-g_k;
409  n2gk=norm2(g_k);
410  int improve_flag=0;
411  inner_iter=0;
412  xbest_k=0;
413 
414  do
415  {
416  if (++inner_iter > maxfn)
417  return xbest_k;
418 
419  dvector v=H*p_k;
420  double tmp2=p_k*v;
421  cout << tmp2 << endl;
422 
423  if (tmp2 <=0.0)
424  {
425  cout << "matrix not positive definite " << tmp2 << endl;
426  // find point at boubndary
427 
428  double a=norm2(p_k);
429  double b=2.0*x_k*p_k;
430  double cc=norm2(x_k)-square(Delta);
431  double d=sqrt(b*b-4*a*cc);
432  double r1=(-b+d)/(2.0*a);
433  double r2=(-b-d)/(2.0*a);
434 
435  cout << " the roots are " << r1 << " " << r2 << endl;
436  if (r1>0)
437  {
438  x_k=x_k+r1*p_k;
439  }
440  else
441  {
442  x_k=x_k+r2*p_k;
443  }
444  cout << "function value = " << 0.5*(x_k*(H*x_k)) + x_k*c <<
445  " norm(x_k) = " << norm(x_k) << endl;
446  break;
447  }
448 
449  alpha_k=n2gk/(tmp2);
450  x_k+=alpha_k*p_k;
451 
452  double nxk=norm(x_k);
453  if (nxk>Delta)
454  {
455  // we have goneoutside the trust region
456  cout << " we have gone outside the trust region " << endl;
457  // find point at boubndary
458 
459  double a=norm2(p_k);
460  double b=2.0*x_k*p_k;
461  double cc=norm2(x_k)-square(Delta);
462  double d=b*b-4*a*cc;
463  if (d<0)
464  cout <<" d = " << d << endl;
465  d=sqrt(d);
466  double r1=(-b+d)/(2.0*a);
467  double r2=(-b-d)/(2.0*a);
468 
469  cout << " the roots are " << r1 << " " << r2 << endl;
470  dvector y_1=x_k+r1*p_k;
471  dvector y_2=x_k+r2*p_k;
472  if (fabs(r1)<fabs(r2))
473  {
474  x_k=x_k+r1*p_k;
475  }
476  else
477  {
478  x_k=x_k+r2*p_k;
479  }
480  cout << norm(y_1) << " " << norm(y_2) << endl;
481  cout << "r1 function value = " << 0.5*(y_1*(H*y_1)) + y_1*c <<
482  " r2 functiomn value = " << 0.5*(y_2*(H*y_2)) + y_2*c <<
483  " normp_k = " << norm(p_k) << sqrt(n2gk) << endl;
484  break;
485  }
486 
487  g_k+= alpha_k*v;
488  double tmp=n2gk;
489  n2gk=norm2(g_k);
490  beta_k=n2gk/tmp;
491  p_k=-g_k+beta_k*p_k;
492  cout << "estimated function value = "
493  << truef + 0.5*(x_k*(H*x_k)) + x_k*c << endl;
494  double tf=do_one_feval(x+x_k,pfmin);
495  cout << "real function value = " << tf << endl;
496  if (tf<=bestf)
497  {
498  improve_flag=1;
499  xbest_k=x_k;
500  cout << "norm(H*xbest_k+c)" << norm(H*xbest_k+c) << endl;
501  bestf=tf;
502  }
503  else
504  {
505  if (improve_flag==0) iflag=1;
506  return xbest_k;
507  }
508  }
509  while (n2gk>tol);
510  estdiff=0.5*(x_k*(H*x_k)) + x_k*c;
511  cout << "estimated function value = "
512  << truef + estdiff << endl;
513  double tf=do_one_feval(x+x_k,pfmin);
514  truediff=tf-truef;
515  truef=tf;
516  cout << "real function value = " << tf << endl;
517  return xbest_k;
518 }
519 */
520 
526  (const dvector& x,function_minimizer * pfmin)
527 {
528  double f=0.0;
529  //double fb=1.e+100;
530  dvector g(1,usize);
531  dvector ub(1,usize);
533  int nvar=initial_params::nvarcalc();
534  int nvar1=initial_params::nvarcalc_all();
535  cout << nvar << " " << nvar1 << endl;
537  dvariable vf=0.0;
540  pfmin->AD_uf_inner();
542  vf+=pen;
543  f=value(vf);
544  return f;
545 }
546 
547 /*
548 dvector laplace_approximation_calculator::lincg(dvector& x,
549  dvector& c, dmatrix& H,double tol,double Delta,function_minimizer * pfmin,
550  double& truef,double& estdiff,double& truediff,double& bestf,
551  int& iflag,int& inner_iter,int maxfn)
552 {
553  iflag=0;
554  int n=c.indexmax();
555  dvector g_k(1,n);
556  dvector p_k(1,n);
557  dvector x_k(1,n);
558  dvector xbest_k(1,n);
559  double alpha_k;
560  double beta_k;
561  double n2gk=0.0;
562  x_k=0.0;
563  g_k=c;
564  p_k=-g_k;
565  n2gk=norm2(g_k);
566  int improve_flag=0;
567  inner_iter=0;
568  xbest_k=0;
569  cout << norm2(H*p_k+c) << endl;
570 
571  do
572  {
573  dvector v=H*p_k;
574  double tmp2=p_k*v;
575  alpha_k=n2gk/(tmp2);
576  x_k+=alpha_k*p_k;
577  double nxk=norm(x_k);
578  g_k+= alpha_k*v;
579  double tmp=n2gk;
580  n2gk=norm2(g_k);
581  beta_k=n2gk/tmp;
582  p_k=-g_k+beta_k*p_k;
583  cout << norm2(H*p_k+c) << endl;
584  }
585  while(1);
586 }
587 */
588 
589 /*
590 dvector laplace_approximation_calculator::lincg(dvector& xinit,
591  dvector& c, dmatrix& H,double tol,double Delta,function_minimizer * pfmin,
592  double& truef,double& estdiff,double& truediff,double& bestf,
593  int& iflag,int& inner_iter,int maxfn)
594 {
595  iflag=0;
596  int n=c.indexmax();
597  dmatrix g(0,20,1,n);
598  dmatrix q(0,20,1,n);
599  dmatrix p(0,20,1,n);
600  dmatrix x(0,20,1,n);
601  dmatrix r(0,20,1,n);
602  dvector alpha(0,20);
603  dvector beta(0,20);
604  int k=0;
605  x(0)=0.0;
606  g(0)=H*x(0)+c;
607  p(0)=-g(0);
608  cout << norm(H*x(k)+c) << endl;
609 
610  do
611  {
612  alpha(k)=norm2(g(k))/(p(k)*H*p(k));
613  x(k+1)=x(k)+alpha(k)*p(k);
614  g(k+1)=g(k)+alpha(k)*H*p(k);
615  beta(k)=norm2(g(k+1))/norm2(g(k));
616  p(k+1)=-g(k+1)+beta(k)*p(k);
617  k++;
618  cout << norm(H*x(k)+c) << endl;
619  }
620  while(1);
621 }
622 */
623 
624 #if defined(USE_ADPVM)
625 
630  dvector& c, dmatrix& H1,double tol,double Delta,function_minimizer * pfmin,
631  double& truef,double& estdiff,double& truediff,double& bestf,
632  int& iflag,int& inner_iter,int maxfn)
633 {
634  iflag=0;
635  int n=c.indexmax();
636  dmatrix r(1,20,1,n);
637  dmatrix p(1,20,1,n);
638  dmatrix x(1,20,1,n);
639  dvector alpha(1,20);
640  dvector beta(1,20);
641  dmatrix H=-H1;
642  int k=1;
643  x(1)=0.0;
644  r(1)=-c;
645  p(1)=r(1);
646  cout << norm(H*x(k)+c) << endl;
647  cout << norm(H*x(k)-c) << endl;
648 
649  do
650  {
651  dvector w=H*p(k);
652  alpha(k)=(r(k)*H*r(k))/norm2(w);
653  r(k+1)=r(k)-alpha(k)*(H*p(k));
654  beta(k)=(r(k+1)*H*r(k+1))/(r(k)*H*r(k));
655  p(k+1)=r(k)+beta(k)*p(k);
656  x(k+1)=x(k)+alpha(k)*p(k);
657  k++;
658  cout << norm(H*x(k)+c) << endl;
659  cout << norm(H*x(k)-c) << endl;
660  }
661  while(1);
662  return 0;
663 }
664 #endif
void initialize(void)
Description not yet available.
Definition: df1b2f14.cpp:155
static void reset(const init_df1b2vector &, const df1b2variable &)
Description not yet available.
Definition: df1b2f15.cpp:51
virtual void AD_uf_inner()
Definition: xmodelm4.cpp:40
static void set_yes_derivatives(void)
Definition: df1b2fun.h:761
df1b2_gradlist * f1b2gradlist
Definition: df1b2glo.cpp:49
void set_dependent_variable(const df1b2variable &_x)
Description not yet available.
Definition: df1b2fn2.cpp:699
static void set_no_derivatives(void)
Definition: df1b2fun.h:760
Description not yet available.
Definition: adrndeff.h:182
double calculate_importance_sample(const dvector &x, const dvector &u0, const dmatrix &Hess, const dvector &_xadjoint, const dvector &_uadjoint, const dmatrix &_Hessadjoint, function_minimizer *pmin)
Description not yet available.
Definition: df1b2imp.cpp:23
static void set_NO_DERIVATIVES(void)
Disable accumulation of derivative information.
Definition: gradstrc.cpp:641
void test_trust_region_method(function_minimizer *pmin)
Description not yet available.
static void set_active_random_effects(void)
Definition: model.cpp:267
static ofstream * global_logfile
Definition: fvar.hpp:8858
void get_complete_hessian(dmatrix &H, function_minimizer *pfmin)
#define x
double do_one_feval(const dvector &x, function_minimizer *pfmin)
Description not yet available.
Definition: test_trust.cpp:526
#define ADUNCONST(type, obj)
Creates a shallow copy of obj that is not CONST.
Definition: fvar.hpp:140
Vector of double precision numbers.
Definition: dvector.h:50
static int separable_flag
Definition: df1b2fun.h:1351
static int passnumber
Definition: df1b2fun.h:289
static re_objective_function_value * pobjfun
Definition: df1b2fun.h:1693
double calculate_laplace_approximation(const dvector &x, const dvector &u0, const dmatrix &Hess, const dvector &_xadjoint, const dvector &_uadjoint, const dmatrix &_Hessadjoint, function_minimizer *pmin)
Description not yet available.
Definition: df1b2lap.cpp:1476
void initialize(void)
Description not yet available.
Definition: df1b2f10.cpp:171
Description not yet available.
Definition: df1b2fun.h:745
static dvariable reset(const dvar_vector &x)
Definition: model.cpp:345
ADMB variable vector.
Definition: fvar.hpp:2172
static int maxder
Definition: df1b2fun.h:292
double norm(const d3_array &a)
Return computed norm value of a.
Definition: d3arr2a.cpp:190
Description not yet available.
Definition: df1b2fun.h:266
static int nvarcalc()
Definition: model.cpp:152
fixed_smartlist nlist
Definition: df1b2fun.h:754
void initialize(void)
Description not yet available.
Definition: df1b2f13.cpp:158
double evaluate_function(const dvector &x, function_minimizer *pfmin)
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
Definition: df1b2lap.cpp:2026
prnstream & endl(prnstream &)
test_smartlist list
Definition: df1b2fun.h:753
#define min(a, b)
Definition: cbivnorm.cpp:188
fixed_smartlist2 nlist3
Definition: df1b2fun.h:758
int indexmax() const
Get maximum valid index.
Definition: dvector.h:204
fixed_smartlist2 nlist2
Definition: df1b2fun.h:756
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
static objective_function_value * pobjfun
Definition: admodel.h:2394
Description not yet available.
#define M
Definition: rngen.cpp:57
dvariable beta(const prevariable &a, const prevariable &b)
Beta density function.
Definition: vbeta.cpp:18
static int nvarcalc_all(void)
Description not yet available.
Definition: nvarcall.cpp:17
Description not yet available.
Definition: fvar.hpp:2819
double norm2(const d3_array &a)
Return sum of squared elements in a.
Definition: d3arr2a.cpp:167
test_smartlist list3
Definition: df1b2fun.h:757
Description not yet available.
Definition: df1b2fun.h:373
dvector lincg(dvector &x, dvector &c, dmatrix &H, double tol, double Delta, function_minimizer *pfmin, double &truef, double &e, double &f, double &fbest, int &iflag, int &iter, int maxfn)
Description not yet available.
Definition: test_trust.cpp:629
#define w
static int minder
Definition: df1b2fun.h:291
Description not yet available.
Description not yet available.
Definition: admodel.h:1850
static void set_YES_DERIVATIVES(void)
Enable accumulation of derivative information.
Definition: gradstrc.cpp:650
virtual void user_function()
Definition: xmodelm4.cpp:43
void get_second_ders(int xs, int us, const init_df1b2vector y, dmatrix &Hess, dmatrix &Dux, df1b2_gradlist *f1b2gradlist, function_minimizer *pfmin)
dvector value(const df1_one_vector &v)
Definition: df11fun.cpp:69
#define max(a, b)
Definition: cbivnorm.cpp:189
void initialize(void)
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
Definition: dmat7.cpp:12
static double fun_without_pen
Definition: df1b2fun.h:1694
void reset(void)
Description not yet available.
Definition: df1b2fn2.cpp:581
test_smartlist list2
Definition: df1b2fun.h:755
Fundamental data type for reverse mode automatic differentiation.
Definition: fvar.hpp:1518
double * u_dot
Definition: df1b2fun.h:196
dmatrix choleski_decomp_positive(const dmatrix &MM, double bound)
Description not yet available.
Definition: dmat35.cpp:33
void df1b2_gradcalc1(void)
Description not yet available.
Definition: df1b2fun.cpp:145
static void set_inactive_only_random_effects(void)
Definition: model.cpp:259