ADMB Documentation  -a65f1c97
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
quadpri.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 <df1b2fnl.h>
12 
13 #ifndef OPT_LIB
14  #include <cassert>
15  #include <climits>
16 #endif
17 
19 
20 // this should be a resizeable array
22 
25 
31  {
32  for (int i=0;i<num_quadratic_prior;i++)
33  {
34  //if (ptr[i]->get_num_active_parameters()>0)
35  {
36  ptr[i]->get_cM();
37  }
38  }
39  }
40 
46  function_minimizer * pfmin)
47 {
48  int xsize = initial_params::nvarcalc();
49  dvector g(1,xsize);
50  gradcalc(0,g);
51  //double f=0.0;
52  independent_variables u(1,xsize);
53  u=x;
54  dvariable vf=0.0;
56  //vf=0.0;
57  dvar_matrix Hess_all(1,usize,1,usize);
59  // so that dvar_matrix Hessian contributions are calculated
61  pfmin->AD_uf_inner();
63  {
65  }
67 
69  Hess_all=pfmin->lapprox->Hess;
70  for (int i=0;i<quadratic_prior::get_num_quadratic_prior();i++)
71  {
72  //Hess_all += quadratic_prior::get_ptr(i)->get_vHessian();
73  unsigned int nv =
75  if (nv>0)
76  quadratic_prior::get_ptr(i)->get_vHessian(Hess_all,xsize);
77  else
78  quadratic_prior::get_ptr(i)->get_cHessian(Hess_all,xsize);
79  }
80  int sgn = 0;
81  vf=0.5*ln_det(Hess_all,sgn);
82  gradcalc(xsize,g);
83  return g;
84 }
85 
91 {
93  {
94  cerr << "Error[" << __FILE__ << ':' << __LINE__
95  << "]: Max size exceeded.\n";
96 
97  ad_exit(1);
98  }
99  else
100  {
102  ptr[num_quadratic_prior++]=this;
103  }
104 }
105 
111  {
112  return (*pu)*((*pMinv)*(*pu));
113  }
114 
120  {
121  return *pMinv;
122  }
123 
129  {
131  int mmin=(*fpu)(fpu->indexmin()).get_ind_index();
132  return mmin-xs-1;
133  }
134  //dmatrix quadratic_prior::get_cHessian(void)
135 
141  {
142  int offset=get_offset(xsize);
143  int imin=pMinv->indexmin();
144  int imax=pMinv->indexmax();
145  if (offset==0)
146  {
147  int i,j;
148  switch(old_style_flag)
149  {
150  case 0:
151  for (i=imin;i<=imax;i++)
152  for (j=imin;j<=imax;j++)
153  H(i,j)+=(*pMinv)(i,j);
154  break;
155  case 1:
156  for (i=imin;i<=imax;i++)
157  for (j=imin;j<=imax;j++)
158  H(i,j)+=2.0*(*pMinv)(i,j);
159  break;
160  case 2:
161  for (i=imin;i<=imax;i++)
162  for (j=imin;j<=imax;j++)
163  H(i,j)+=2.0*(*pMinv)(i,j);
164  break;
165  default:
166  cerr << "Illegal value in switch statement" << endl;
167  ad_exit(1);
168  }
169  }
170  else
171  {
172  int i,j;
173  switch(old_style_flag)
174  {
175  case 0:
176  for (i=imin;i<=imax;i++)
177  for (j=imin;j<=imax;j++)
178  H(offset+i,offset+j)+=(*pMinv)(i,j);
179  break;
180  case 1:
181  for (i=imin;i<=imax;i++)
182  for (j=imin;j<=imax;j++)
183  H(offset+i,offset+j)+=2.0*(*pMinv)(i,j);
184  break;
185  case 2:
186  for (i=imin;i<=imax;i++)
187  for (j=imin;j<=imax;j++)
188  H(offset+i,offset+j)+=2.0*(*pMinv)(i,j);
189  break;
190  default:
191  cerr << "Illegal value in switch statement" << endl;
192  ad_exit(1);
193  }
194  }
195  }
196 
202  {
203  int offset=get_offset(xsize);
204  int imin=pMinv->indexmin();
205  int imax=pMinv->indexmax();
206  if (offset==0)
207  {
208  int i,j;
209  switch(old_style_flag)
210  {
211  case 0:
212  for (i=imin;i<=imax;i++)
213  for (j=imin;j<=imax;j++)
214  H(i,j)+=(*pMinv)(i,j);
215  break;
216  case 1:
217  for (i=imin;i<=imax;i++)
218  for (j=imin;j<=imax;j++)
219  H(i,j)+=2.0*(*pMinv)(i,j);
220  break;
221  case 2:
222  for (i=imin;i<=imax;i++)
223  for (j=imin;j<=imax;j++)
224  H(i,j)+=2.0*(*pMinv)(i,j);
225  break;
226  default:
227  cerr << "Illegal value in switch statement" << endl;
228  ad_exit(1);
229  }
230  }
231  else
232  {
233  int i,j;
234  switch(old_style_flag)
235  {
236  case 0:
237  for (i=imin;i<=imax;i++)
238  for (j=imin;j<=imax;j++)
239  H(offset+i,offset+j)+=(*pMinv)(i,j);
240  break;
241  case 1:
242  for (i=imin;i<=imax;i++)
243  for (j=imin;j<=imax;j++)
244  H(offset+i,offset+j)+=2.0*(*pMinv)(i,j);
245  break;
246  case 2:
247  for (i=imin;i<=imax;i++)
248  for (j=imin;j<=imax;j++)
249  H(offset+i,offset+j)+=2.0*(*pMinv)(i,j);
250  break;
251  default:
252  cerr << "Illegal value in switch statement" << endl;
253  ad_exit(1);
254  }
255  }
256  }
257 
263 {
264  if (!dfpMinv)
265  {
266  cerr << "This can't happen" << endl;
267  ad_exit(1);
268  }
269  else
270  {
271  int imin=dfpMinv->indexmin();
272  int imax=dfpMinv->indexmax();
273  int offset=get_offset(xsize);
274  if (offset==0)
275  {
276  switch(old_style_flag)
277  {
278  case 0:
279  for (int i=imin;i<=imax;i++)
280  for (int j=imin;j<=imax;j++)
281  H(i,j)+=(*dfpMinv)(i,j);
282  break;
283  case 1:
284  for (int i=imin;i<=imax;i++)
285  for (int j=imin;j<=imax;j++)
286  H(i,j)+=2.0*(*dfpMinv)(i,j);
287  break;
288  case 2:
289  for (int i=imin;i<=imax;i++)
290  for (int j=imin;j<=imax;j++)
291  H(i,j)+=2.0*(*dfpMinv)(i,j);
292  break;
293  default:
294  cerr << "Illegal valueinswitch statement" << endl;
295  ad_exit(1);
296  }
297  }
298  else
299  {
300  switch(old_style_flag)
301  {
302  case 0:
303  for (int i=imin;i<=imax;i++)
304  for (int j=imin;j<=imax;j++)
305  H(offset+i,offset+j)+=(*dfpMinv)(i,j);
306  break;
307  case 1:
308  for (int i=imin;i<=imax;i++)
309  for (int j=imin;j<=imax;j++)
310  H(offset+i,offset+j)+=2.0*(*dfpMinv)(i,j);
311  break;
312  case 2:
313  for (int i=imin;i<=imax;i++)
314  for (int j=imin;j<=imax;j++)
315  H(offset+i,offset+j)+=2.0*(*dfpMinv)(i,j);
316  break;
317  default:
318  cerr << "Illegal valueinswitch statement" << endl;
319  ad_exit(1);
320  }
321  }
322  }
323 }
324 
325  /*
326  dvar_matrix quadratic_prior::get_vHessian(void)
327  {
328  return *dfpMinv;
329  //return value(*pMinv);
330  }
331  */
332 
338  {
339  int offset=get_offset(xs);
340  int imin=dfpMinv->indexmin();
341  int imax=dfpMinv->indexmax();
342  if (offset==0)
343  {
344  int i,j;
345  switch(old_style_flag)
346  {
347  case 0:
348  for (i=imin;i<=imax;i++)
349  for (j=imin;j<=imax;j++)
350  H(i,j)+=value((*dfpMinv)(i,j));
351  break;
352  case 1:
353  for (i=imin;i<=imax;i++)
354  for (j=imin;j<=imax;j++)
355  H(i,j)+=2.0*value((*dfpMinv)(i,j));
356  break;
357  case 2:
358  for (i=imin;i<=imax;i++)
359  for (j=imin;j<=imax;j++)
360  H(i,j)+=2.0*value((*dfpMinv)(i,j));
361  break;
362  break;
363  default:
364  cerr << "Illegal valueinswitch statement" << endl;
365  ad_exit(1);
366  }
367  }
368  else
369  {
370  int i,j;
371  switch(old_style_flag)
372  {
373  case 0:
374  for (i=imin;i<=imax;i++)
375  for (j=imin;j<=imax;j++)
376  H(offset+i,offset+j)+=value((*dfpMinv)(i,j));
377  break;
378  case 1:
379  for (i=imin;i<=imax;i++)
380  for (j=imin;j<=imax;j++)
381  H(offset+i,offset+j)+=2.0*value((*dfpMinv)(i,j));
382  break;
383  case 2:
384  for (i=imin;i<=imax;i++)
385  for (j=imin;j<=imax;j++)
386  H(offset+i,offset+j)+=2.0*value((*dfpMinv)(i,j));
387  break;
388  default:
389  cerr << "Illegal valueinswitch statement" << endl;
390  ad_exit(1);
391  }
392  }
393  //return value(*dfpMinv);
394  }
395 
401  {
402  return ((*pMinv)*(*pu));
403  }
404 
410  {
411  int offset=get_offset(xs);
412  dvector tg=((*pMinv)*value(*pu));
413  int imin=pMinv->indexmin();
414  int imax=pMinv->indexmax();
415  if (offset==0)
416  {
417  int i;
418  switch(old_style_flag)
419  {
420  case 0:
421  for (i=imin;i<=imax;i++)
422  g(i)+=tg(i);
423  break;
424  case 1:
425  for (i=imin;i<=imax;i++)
426  g(i)+=2.0*tg(i);
427  break;
428  case 2:
429  for (i=imin;i<=imax;i++)
430  g(i)+=2.0*tg(i);
431  break;
432  default:
433  cerr << "Illegal valueinswitch statement" << endl;
434  ad_exit(1);
435  }
436  }
437  else
438  {
439  int i;
440  switch(old_style_flag)
441  {
442  case 0:
443  for (i=imin;i<=imax;i++)
444  g(offset+i)+=tg(i);
445  break;
446  case 1:
447  for (i=imin;i<=imax;i++)
448  g(offset+i)+=2.0*tg(i);
449  break;
450  case 2:
451  for (i=imin;i<=imax;i++)
452  g(offset+i)+=2.0*tg(i);
453  break;
454  default:
455  cerr << "Illegal valueinswitch statement" << endl;
456  ad_exit(1);
457  }
458  }
459  //return ((*pMinv)*value(*pu));
460  }
461 
466  pMinv(NULL),
467  dfpMinv(NULL),
468  pu(NULL),
469  xmyindex(0)
470 {
471  add_to_list();
472 }
477 {
478  if (pMinv)
479  {
480  delete pMinv;
481  pMinv = NULL;
482  }
483  if (pu)
484  {
485  delete pu;
486  pu = NULL;
487  }
488  if (dfpMinv)
489  {
490  delete dfpMinv;
491  dfpMinv = NULL;
492  }
493 }
494 
499  void quadratic_prior::allocate( const dvar_vector & _u,const char * s)
500  {
501  allocate(_u);
502  }
503 
509  {
510  if (!allocated(_u))
511  {
512  cerr << "You must put random effects vector before"
513  " quadtratic prior in the TPL file" << endl;
514  ad_exit(1);
515  }
516  pu = new dvar_vector((dvar_vector&)(_u));
517  }
518 
524  const dvar_vector & _u,const char * s)
525  {
526  allocate(_M,_u);
527  }
528 
534  const dvar_vector & _u)
535  {
536  pMinv =new dmatrix(value(inv(_M)));
537  pu = new dvar_vector((dvar_vector&)(_u));
538  }
539 
545  {
546  dvariable f=0.0;
547  for (int i=0;i<num_quadratic_prior;i++)
548  {
549  f+=ptr[i]->get_function();
550  }
551  return f;
552  }
553 
559  {
560  for (int i=0;i<num_quadratic_prior;i++)
561  {
562  ptr[i]->get_cgradient(g,xs);
563  /*
564  if (old_style_flag)
565  {
566  return ptr[i]->get_cgradient();
567  }
568  else
569  {
570  return ptr[i]->get_cgradient();
571  }
572  */
573  }
574  //return f;
575  }
576 /*
577  dvar_vector quadratic_prior::get_gradient_contribution(void)
578  {
579  for (int i=0;i<num_quadratic_prior;i++)
580  {
581  return ptr[i]->get_gradient();
582  }
583  //return f;
584  }
585 */
586 
592 {
593  for (int i=0;i<num_quadratic_prior;i++)
594  {
595  if (!ptr[i])
596  {
597  cerr << "ptr["<<i<<"] = 0 in"
598  " quadratic_prior::get_cHessian_contribution" << endl;
599  ad_exit(1);
600  }
601  else if (!ptr[i]->pMinv)
602  {
603  cerr << "ptr["<<i<<"]->pMinv = 0 in"
604  " quadratic_prior::get_cHessian_contribution" << endl;
605  ad_exit(1);
606  }
607  else if (!allocated(*(ptr[i]->pMinv)))
608  {
609  cerr << "*ptr["<<i<<"] is unallocated in"
610  " quadratic_prior::get_cHessian_contribution" << endl;
611  ad_exit(1);
612  }
613  else
614  {
615  ptr[i]->get_cHessian(H,xsize);
616  /*
617  if (old_style_flag)
618  {
619  return 2.0*ptr[i]->get_cHessian();
620  }
621  else
622  {
623  return ptr[i]->get_cHessian();
624  }
625  */
626  }
627  }
628  //return f;
629 }
630 
636  {
637  for (int i=0;i<num_quadratic_prior;i++)
638  {
639  ptr[i]->get_vHessian(H,xs);
640  /*
641  if (old_style_flag)
642  {
643  return 2.0*ptr[i]->get_vHessian();
644  }
645  else
646  {
647  return ptr[i]->get_vHessian();
648  }
649  */
650  }
651  //return f;
652  }
653  /*
654  dvar_matrix quadratic_prior::get_Hessian_contribution(void)
655  {
656  for (int i=0;i<num_quadratic_prior;i++)
657  {
658  return ptr[i]->get_Hessian();
659  }
660  //return f;
661  }
662  */
663 
669  int xsize)
670  {
671  for (int i=0;i<num_quadratic_prior;i++)
672  {
673  unsigned int nv=df1b2quadratic_prior::get_ptr(i)->
674  get_num_active_parameters();
675  if (nv)
676  ptr[i]->get_cHessian_from_vHessian(Hess,xsize);
677  else
678  ptr[i]->get_cHessian(Hess,xsize);
679  }
680  //return f;
681  }
682 
688  {
689  dvariable lndet;
690  dvariable sgn;
691 
693  {
694  case 0:
695  *objective_function_value::pobjfun+=0.5*(*pu)*(solve(_M,*pu,lndet,sgn));
697  //*objective_function_value::pobjfun+=0.5*(*pu)*(solve(_M,*pu));
698  //*objective_function_value::pobjfun+=0.5*ln_det(_M);
699  break;
700  case 1:
701  *objective_function_value::pobjfun+=(*pu)*(solve(_M,*pu));
702  break;
703  case 2:
704  *objective_function_value::pobjfun+=(*pu) * ( _M * (*pu) );
705  break;
706  default:
707  cerr << "Illegal value for quadratic_prior::old_style_flag"
708  << endl;
709  ad_exit(1);
710  }
711  if (pMinv)
712  {
713  delete pMinv;
714  pMinv=0;
715  }
716  if (dfpMinv)
717  {
718  delete dfpMinv;
719  dfpMinv=0;
720  }
722  {
723  case 0:
724  case 1:
726  {
727  pMinv = new dmatrix(inv(value(_M)));
728  if (pMinv==0)
729  {
730  cerr << "Error allocating dmatrix" << endl;
731  ad_exit(1);
732  }
733  }
735  {
736  dfpMinv = new dvar_matrix(inv(_M));
737  if (dfpMinv==0)
738  {
739  cerr << "Error allocating dvar_matrix" << endl;
740  ad_exit(1);
741  }
742  }
743  break;
744  case 2:
746  {
747  pMinv = new dmatrix(value(_M));
748  if (pMinv==0)
749  {
750  cerr << "Error allocating dmatrix" << endl;
751  ad_exit(1);
752  }
753  }
755  {
756  unsigned int nv =
758  //if (nv==0)
759  if (nv!=0)
760  {
761  dfpMinv = new dvar_matrix(_M);
762  if (dfpMinv==0)
763  {
764  cerr << "Error allocating dvar_matrix" << endl;
765  ad_exit(1);
766  }
767  }
768  else
769  {
770  pMinv = new dmatrix(value(_M));
771  if (pMinv==0)
772  {
773  cerr << "Error allocating dmatrix" << endl;
774  ad_exit(1);
775  }
776  }
777  }
778  break;
779  default:
780  cerr << "Illegal value for quadratic_prior::old_style_flag"
781  << endl;
782  ad_exit(1);
783  }
784  }
785 
791  {
792  dvariable lndet;
793  dvariable sgn;
794 
796  {
797  case 0:
798  cerr << " can't get here " << endl;
799  ad_exit(1);
800  break;
801  case 1:
802  cerr << " can't get here " << endl;
803  ad_exit(1);
804  break;
805  case 2:
806  *objective_function_value::pobjfun+=(*pu) * ( _M * (*pu) );
807  break;
808  default:
809  cerr << "Illegal value for quadratic_prior::old_style_flag"
810  << endl;
811  ad_exit(1);
812  }
813  if (pMinv)
814  {
815  delete pMinv;
816  pMinv=0;
817  }
818  if (dfpMinv)
819  {
820  delete dfpMinv;
821  dfpMinv=0;
822  }
824  {
825  case 0:
826  case 1:
827  cerr << " can't get here " << endl;
828  ad_exit(1);
829  break;
830  case 2:
833  {
834  pMinv = new dmatrix(_M);
835  if (pMinv==0)
836  {
837  cerr << "Error allocating dmatrix" << endl;
838  ad_exit(1);
839  }
840  }
841  break;
842  default:
843  cerr << "Illegal value for quadratic_prior::old_style_flag"
844  << endl;
845  ad_exit(1);
846  }
847  }
848 
854 {
856 }
857 
863 {
864  old_style_flag=0;
865 }
866 
872 {
874 }
875 
881 {
883 }
884 
890 {
891  old_style_flag=2;
892 }
893 
899 {
901 }
902 
908 {
910 }
911 
917 {
919 }
920 
926 {
927  old_style_flag=2;
928 }
929 
935 {
937 }
void get_cHessian_from_vHessian(dmatrix, int)
Description not yet available.
Definition: quadpri.cpp:337
laplace_approximation_calculator * lapprox
Definition: admodel.h:1862
void operator=(const dvar_matrix &M)
Description not yet available.
Definition: quadpri.cpp:898
virtual void AD_uf_inner()
Definition: xmodelm4.cpp:40
virtual void get_cM(void)=0
df1b2_init_vector * pu
Definition: df1b2fun.h:1954
dvar_matrix * dfpMinv
Definition: df1b2fun.h:1896
dmatrix * pMinv
Definition: df1b2fun.h:1895
virtual void set_old_style_flag(void)
Description not yet available.
Definition: quadpri.cpp:889
constant_quadratic_re_penalty(void)
Description not yet available.
Definition: quadpri.cpp:916
void operator=(const dmatrix &M)
Description not yet available.
Definition: quadpri.cpp:934
dvariable get_function(void)
Description not yet available.
Definition: quadpri.cpp:110
~quadratic_prior(void)
Destructor.
Definition: quadpri.cpp:476
#define x
int allocated(const ivector &v)
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
Definition: fvar_a59.cpp:13
Vector of double precision numbers.
Definition: dvector.h:50
Description not yet available.
Definition: df1b2fun.h:1401
unsigned int get_num_active_parameters(void)
Definition: df1b2fun.h:1963
int indexmin() const
Definition: fvar.hpp:2917
static void get_cgradient_contribution(dvector, int)
Description not yet available.
Definition: quadpri.cpp:558
normal_quadratic_prior(void)
Description not yet available.
Definition: quadpri.cpp:853
dvector evaluate_function_with_quadprior(const dvector &x, int usize, function_minimizer *pfmin)
Description not yet available.
Definition: quadpri.cpp:45
static void get_cHessian_contribution_from_vHessian(dmatrix, int)
Description not yet available.
Definition: quadpri.cpp:668
static const int max_num_quadratic_prior
Definition: df1b2fun.h:1906
exitptr ad_exit
Definition: gradstrc.cpp:53
int indexmin(void) const
Definition: df1b2fun.h:969
static dvariable reset(const dvar_vector &x)
Definition: model.cpp:345
dvar_matrix get_Hessian(void)
Description not yet available.
Definition: quadpri.cpp:119
ADMB variable vector.
Definition: fvar.hpp:2172
void allocate(const dvar_vector &_u, const char *s)
Description not yet available.
Definition: quadpri.cpp:499
void gradcalc(int nvar, const dvector &g)
Definition: sgradclc.cpp:77
static int nvarcalc()
Definition: model.cpp:152
ivector sgn(const dvector &v)
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
Definition: dvect24.cpp:11
dvar_vector get_gradient(void)
Description not yet available.
Definition: quadpri.cpp:400
static dvariable get_quadratic_priors(void)
Description not yet available.
Definition: quadpri.cpp:544
dvector solve(const dmatrix &aa, const dvector &z)
Solve a linear system using LU decomposition.
Definition: dmat34.cpp:46
prnstream & endl(prnstream &)
Description not yet available.
Definition: fvar.hpp:1937
void operator=(const dvar_matrix &)
Description not yet available.
Definition: quadpri.cpp:687
Description not yet available.
virtual void set_old_style_flag(void)
Description not yet available.
Definition: quadpri.cpp:862
static objective_function_value * pobjfun
Definition: admodel.h:2394
#define M
Definition: rngen.cpp:57
Description not yet available.
Definition: fvar.hpp:2819
static df1b2quadratic_prior * ptr[]
Definition: df1b2fun.h:1956
void operator=(const dvar_matrix &M)
Description not yet available.
Definition: quadpri.cpp:871
double ln_det(const dmatrix &m1, int &sgn)
Compute log determinant of a constant matrix.
Definition: dmat3.cpp:536
int indexmax() const
Definition: fvar.hpp:2921
void get_cHessian(dmatrix, int)
Description not yet available.
Definition: quadpri.cpp:140
static void get_vHessian_contribution(dvar_matrix, int)
Description not yet available.
Definition: quadpri.cpp:635
static int num_quadratic_prior
Definition: df1b2fun.h:1905
int indexmax(void) const
Definition: fvar.hpp:2572
quadratic_re_penalty(void)
Description not yet available.
Definition: quadpri.cpp:880
void add_to_list(void)
Description not yet available.
Definition: quadpri.cpp:90
static df1b2quadratic_prior * get_ptr(int i)
Definition: df1b2fun.h:1961
dvar_vector * pu
Definition: df1b2fun.h:1897
Class definition of matrix with derivitive information .
Definition: fvar.hpp:2480
void get_cgradient(dvector, int)
Description not yet available.
Definition: quadpri.cpp:409
Description not yet available.
Definition: df1b2fun.h:1893
void get_vHessian(dvar_matrix, int)
Description not yet available.
Definition: quadpri.cpp:262
static quadratic_prior * ptr[]
Definition: df1b2fun.h:1901
Description not yet available.
Definition: admodel.h:1850
int get_myindex(void)
Definition: df1b2fun.h:1911
static void get_cHessian_contribution(dmatrix, int)
Description not yet available.
Definition: quadpri.cpp:591
dvector value(const df1_one_vector &v)
Definition: df11fun.cpp:69
int get_offset(int xs)
Description not yet available.
Definition: quadpri.cpp:128
quadratic_prior(void)
Default constructor.
Definition: quadpri.cpp:465
static quadratic_prior * get_ptr(int i)
Definition: df1b2fun.h:1912
static int get_num_quadratic_prior(void)
Definition: df1b2fun.h:1916
int indexmin(void) const
Definition: fvar.hpp:2568
Fundamental data type for reverse mode automatic differentiation.
Definition: fvar.hpp:1518
df1_one_variable inv(const df1_one_variable &x)
Definition: df11fun.cpp:384
virtual void set_old_style_flag(void)
Description not yet available.
Definition: quadpri.cpp:925
static void get_M_calculations(void)
Description not yet available.
Definition: quadpri.cpp:30
static int in_qp_calculations
Definition: df1b2fun.h:1909