ADMB Documentation  -a65f1c97
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
df1b2fnl.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 #ifndef OPT_LIB
13  #include <cassert>
14  #include <climits>
15 #endif
16 
17 #define USE_BARD_PEN
18 class newadkludge;
19 newadkludge * newadkl=0;
20 
21 //typedef funnel_init_var* PFUNNEL_INIT_VAR;
22 
26 unsigned int funnel_init_var::num_vars=0;
27 //int funnel_init_var::num_all_vars=0;
30 //funnel_init_var ** funnel_init_var::all_list=new PFUNNEL_INIT_VAR[2000];
35 
36 // int funnel_check_flag=0;
37 
43 {
44 #ifndef OPT_LIB
45  assert(num_vars <= INT_MAX);
46 #endif
47  index = (int)num_vars;
48  list[num_vars++]=this;
49  //all_list[num_all_vars++]=this;
50 }
51 
57 {
58 #ifndef OPT_LIB
59  assert(num_vars <= INT_MAX);
60 #endif
61  if (index != (int)(num_vars - 1))
62  {
63  cerr << "can only delete last member" << endl;
64  ad_exit(1);
65  }
66  num_vars--;
67  index=-1;
68 }
69 
75 {
76  index=-1;
78 }
79 
85 {
86  //cout << "In allocate" << endl;
87 }
88 
94 {
95  for (int i=0;i<df1b2variable::adpool_counter;i++)
96  {
97  cout << " Pool depth " << i << " "
99  << " " << df1b2variable::adpool_vector[i] << endl;
100  }
101 }
102 
107 {
108  if (plist)
109  {
110 #ifndef OPT_LIB
111  assert(num_active_parameters <= INT_MAX);
112 #endif
113  if (plist->indexmax() != (int)num_active_parameters)
114  {
115  delete plist;
116  plist = 0;
117  }
118  }
119  if (py)
120  {
121  delete py;
122  py = 0;
123  }
124 }
125 
131 {
133  if (lapprox)
134  {
135  if (lapprox->calling_set)
136  {
137  (*lapprox->calling_set)(0,0)++;
138  }
139  }
141 #ifndef OPT_LIB
142  assert(num_active_parameters <= INT_MAX);
143 #endif
144  if (py)
145  {
146  if (py->indexmax() != (int)num_active_parameters)
147  {
148  delete py;
149  py=0;
150  }
151  }
152  f1b2gradlist->reset();
153 
154  adpool * tmppool=df1b2variable::pool;
155  if (tmppool)
156  {
157  //cout << tmppool << endl;
158  // check if current pool is the right size
159  if (tmppool->nvar != num_active_parameters)
160  {
161  // check sizes of other pools
162  int found_pool_flag=0;
163  for (int i=0;i<df1b2variable::adpool_counter;i++)
164  {
166  {
168  found_pool_flag=1;
169  break;
170  }
171  }
172  if (!found_pool_flag)
173  {
175  if (!df1b2variable::pool)
176  {
177  cerr << "Memory allocation error" << endl;
178  ad_exit(1);
179  }
180  if (df1b2variable::adpool_counter>df1b2variable::adpool_vectorsize)
181  {
182  //cerr << "Need to increase adpool_vectorsize" << endl;
183  //ad_exit(1);
184  //int offset=get_unused_pool_index();
185  int offset=1;
186  adpool * tmp= df1b2variable::adpool_vector[offset];
187  delete tmp;
192  }
193  else
194  {
199  //df1b2variable::adpool_counter++;
201  }
202  }
203  }
204  }
205  else
206  {
208  if (!df1b2variable::pool)
209  {
210  cerr << "Memory allocation error" << endl;
211  ad_exit(1);
212  }
214  {
215  int offset=1;
216  adpool * tmp= df1b2variable::adpool_vector[offset];
217  delete tmp;
222  }
223  else
224  {
231  //df1b2variable::adpool_counter++;
233  }
234  }
238 
240  //if (funnel_check_flag)
241  // check_pool_depths();
243  int maxdersave=df1b2variable::maxder;
245  if (!py)
246  {
248  }
249  //if (funnel_check_flag)
250  // check_pool_depths();
251  if (!py)
252  {
253  cerr << "memory allocation error" << endl;
254  ad_exit(1);
255  }
256  //init_df1b2vector& tmp = *py;
257 
258 
259  if (plist)
260  {
261  if (plist->indexmax() != (int)num_active_parameters)
262  {
263  delete plist;
264  plist=0;
265  }
266  }
267  if (!plist)
268  {
269  plist = new imatrix(1,(int)num_active_parameters,1,2);
270  }
271  if (!plist)
272  {
273  cerr << "memory allocation error" << endl;
274  ad_exit(1);
275  }
276 
277  int ii=1;
278  for(unsigned int i=0;i<num_vars;i++)
279  {
280  list[i]->xinit(*py,ii);
281  }
282 
283  ii=1;
284  for(unsigned int i=0;i<num_vars;i++)
285  {
286  list[i]->set_index(*plist,ii);
287  }
288 
289  for(int i=0;i<num_inactive_vars;i++)
290  {
291  inactive_list[i]->allocate();
292  }
293 
295  //if (funnel_check_flag)
296  // check_pool_depths();
297  df1b2variable::maxder=maxdersave;
298 }
299 
306  //(df1b2_init_number & x) : df1b2variable()
307 {
309  type=0;
310  pointer=0;
311  ind_index=x.get_ind_index();
312  if (ind_index<0)
313  {
314  add_to_inactive_list();
315  }
316  else
317  {
318  add_to_list();
319 #ifdef DIAG
320  if (lapprox==0)
321  {
322  cout << "This can't happen" << endl;
323  ad_exit(1);
324  }
325 #endif
326  lapprox->used_flags(ind_index)+=1;
327  }
328  //cout << "ind_index = " << ind_index << endl;
329  xu=*(x.get_u());
330 }
331 
339 {
341  df1b2variable& x = (*(u.pv)).df1b2vector::operator () (u.i);
342 
343  type=1;
344  pointer=u.pv;
345  ind_index = x.get_ind_index();
346  if (ind_index<0)
347  {
348  add_to_inactive_list();
349  }
350  else
351  {
352  add_to_list();
353  lapprox->used_flags(ind_index)+=1;
354  }
355  xu=*(x.get_u());
356 }
357 
363 {
364  cerr << "Haven't defined htis yet" << endl;
365  ad_exit(1);
366 }
367 
374 {
375  type=0;
376  pointer=0;
377  ind_index = -1;
378  if (ind_index<0)
379  {
380  add_to_inactive_list();
381  }
382  else
383  {
384  add_to_list();
385  }
386 }
387 
394 {
396  type=0;
397  pointer=0;
398  ind_index = x.get_ind_index();
399  if (ind_index<0)
400  {
402  }
403  else
404  {
405  add_to_list();
407  }
408  xu=*(x.get_u());
409 }
410 
417  funnel_init_var(),
418  df1b2variable(x)
419 {}
420 
427 {
429  type=0;
430  pointer=0;
431  ind_index = x.get_ind_index();
432  get_ind_index() = x.get_ind_index();
433  if (ind_index<0)
434  {
435  add_to_inactive_list();
436  }
437  else
438  {
439  add_to_list();
440  lapprox->used_flags(ind_index)+=1;
441  if (lapprox->calling_set)
442  {
443  int j=++(*lapprox->calling_set)(ind_index,0);
444  int k=lapprox->used_flags(ind_index);
445  if (j != k)
446  {
447  cerr << "This can't happen" << endl;
448  ad_exit(1);
449  }
450  (*lapprox->calling_set)(ind_index,j)=(*lapprox->calling_set)(0,0);
451  }
452  }
453  xu=*(x.get_u());
454 }
455 
461 {
463  *(get_u())=xu;
464  if (index>=0)
465  get_u_dot()[index]=1.0;
466 }
467 
473  (const df1b2variable& x)
474 {
477  {
478  //df1b2variable * tmp = (df1b2variable *) (this);
479  //set_dependent_variable(*tmp);
480  }
482 }
483 
489  const int& _ii)
490 {
491  df1b2variable pen=0.0;
493  ADUNCONST(int,ii)
494  if (!pointer)
495  {
497  }
498  else
499  {
500  switch (type)
501  {
502  case 1: // vector
503  {
506  {
507  // df1b2variable& tmp = boundp(x(ii++),b.getminb(),b.getmaxb(),pen);
508  // df1b2variable::operator = (tmp);
509  df1b2variable::operator =
510  (boundp(x(ii++),b.getminb(),b.getmaxb()));
511  }
512  else
513  {
515  *get_u()=boundp(*(x(ii++).get_u()),b.getminb(),b.getmaxb());
516  }
517  break;
518  }
519  case 2: // matrix
520  default:
521  {
522  cerr << "the bounded matrix case in "
523  " void funnel_init_df1b2variable::xinit has not bee implemented"
524  << endl;
525  ad_exit(1);
526  }
527  }
528  }
529 }
530 
536  const int& _ii,const df1b2variable& _pen)
537 {
539  ADUNCONST(int,ii)
541  if (!pointer)
542  {
544  }
545  else
546  {
547  switch (type)
548  {
549  case 1: // vector
550  {
553  int uf=-1;
554  if (ind_index>0)
555  {
556  uf=l->used_flags(ind_index);
557  }
558  if (uf > 1 && (l->hesstype ==2))
559  {
560  if (ind_index <=lapprox->xsize )
561  {
562  cout << " fixed effect used " << uf << " times" << endl;
564  b.getmaxb()));
565  }
566  else
567  {
568  cout << lapprox->hesstype << endl;
569  cout << " Error random effect used " << uf << " times" << endl;
570  ad_exit(1);
571  }
572  }
573  else
574  {
576  {
578  pen));
579  }
580  else
581  {
583  *get_u()=boundp(*get_u(),b.getminb(),b.getmaxb());
584  double diff=b.getmaxb()-b.getminb();
585  df1b2variable ss=((*this)-b.getminb())/diff;
586 # ifdef USE_BARD_PEN
587  const double l4=log(4.0);
588  double wght=.000001/diff;
589  pen-=wght*(log(ss+double(1.e-40))+log((double(1.0)-ss)
590  +double(1.e-40))+l4);
591 # else
592  XXXX
593 # endif
594  }
595  }
596  break;
597  }
598  case 2: // matrix
599  default:
600  {
601  cerr << "the bounded matrix case in "
602  " void funnel_init_df1b2variable::xinit has not bee implemented"
603  << endl;
604  ad_exit(1);
605  }
606  }
607  }
608 }
609 
615 {
616  int n = 0;
617  for (unsigned int i=0;i<num_vars;i++)
618  {
619  n += list[i]->nvar_calc();
620  }
621 #ifndef OPT_LIB
622  assert(n >= 0);
623 #endif
624  return (unsigned int)n;
625 }
626 
632 {
633  if (!pointer)
634  {
635  y(ii)= xu;
636  }
637  else
638  {
639  switch (type)
640  {
641  case 1: // vector
642  {
644  y(ii)=boundpin(xu,b.getminb(),b.getmaxb());
645  //cout << setprecision(15) << << b.getminb() << " "
646  // << b.getmaxb() << " " << y(ii) << " " << xu << endl;
647  break;
648  }
649  case 2: // matrix
650  default:
651  {
652  cerr << "the bounded matrix case in "
653  " void funnel_init_df1b2variable::xinit has not bee implemented"
654  << endl;
655  ad_exit(1);
656  }
657  }
658  }
659  ii++;
660 }
661 
667 {
668  if (!pointer)
669  {
670  y(ii)= xu;
671  }
672  else
673  {
674  switch (type)
675  {
676  case 1: // vector
677  {
679  y(ii)=boundpin(xu,b.getminb(),b.getmaxb());
680  break;
681  }
682  case 2: // matrix
683  default:
684  {
685  cerr << "the bounded matrix case in "
686  " void funnel_init_df1b2variable::xinit has not bee implemented"
687  << endl;
688  ad_exit(1);
689  }
690  }
691  }
692  ii++;
693 }
694 
695 /*
696 void funnel_init_df1b2variable::xinit(dvector& y,int& ii)
697 {
698  y(ii)= xu;
699  ii++;
700 }
701 */
702 
708 {
709  ivector* pyii = &y(ii);
710  //cout << ind_index << " " << ii << endl;
711  *(pyii->get_v() + 1) = ind_index;
712  *(pyii->get_v() + 2) = ii;
713  ii++;
714 }
715 
721 {
722  int ii=1;
723  df1b2variable pen=0.0;
724  for (unsigned int i=0;i<num_vars;i++)
725  {
726  list[i]->set_value(x,ii,pen);
727  //list[i]->set_value(x,ii);
728  }
729  if (funnel_init_var::funnel_constraints_penalty)
730  {
732  }
733  funnel_init_var::funnel_constraints_penalty=new df1b2variable(pen);
734 }
735 
736 
737 /*
738 funnel_init_df1b2vector::funnel_init_df1b2vector(const df1b2_init_vector & _x)
739 {
740  ADUNCONST(df1b2_init_vector,x)
741  //type=0;
742  //pointer=0;
743  p=&_x;
744  int mmin=p->indexmin();
745  int mmax=p->indexmax();
746  int ind_index = (*p)(mmin).get_ind_index();
747  if (ind_index<0)
748  {
749  add_to_inactive_list();
750  }
751  else
752  {
753  add_to_list();
754  }
755  df1b2variable::noallocate=1;
756  df1b2vector::allocate(mmin,mmax);
757  df1b2variable::noallocate=0;
758 }
759 */
760 
766 {
767  //ADUNCONST(df1b2_init_vector,x)
768  // this seems to be right and not the above although it seemed to work
770  p=&_x;
771  int mmin=p->indexmin();
772  int mmax=p->indexmax();
773  int ind_index = x(mmin).get_ind_index();
774  if (ind_index<0)
775  {
777  }
778  else
779  {
780  add_to_list();
781  for (int i=mmin;i<=mmax;i++)
782  {
783  ind_index = x(i).get_ind_index();
784  lapprox->used_flags(ind_index)+=1;
785  }
787  df1b2vector::allocate(mmin,mmax);
789  }
790 }
795 {
797 }
803 {
804  return p->indexmax()-p->indexmin()+1;
805 }
806 
812 {
813  //df1b2_init_vector * vp = (df1b2_init_vector *) p;
814  //int mmin=vp->indexmin();
815  //int mmax=vp->indexmax();
816  int mmin=p->indexmin();
817  int mmax=p->indexmax();
818  int i;
819  for (i=mmin;i<=mmax;i++)
820  {
821  //y(ii)= value((*vp)(i));
822  y(ii)= value((*p)(i));
823  ii++;
824  }
825 }
826 
832 {
834  int mmin=vp->indexmin();
835  int mmax=vp->indexmax();
836 
837  ivector* pyii = &y(ii);
838  for (int i=mmin;i<=mmax;i++)
839  {
840 
841  *(pyii->get_v() + 1) = ( *vp)(i).get_ind_index();
842  *(pyii->get_v() + 2) = ii;
843  ii++;
844 
845  ++pyii;
846  }
847 }
848 
854  const int& _ii,const df1b2variable& _pen)
855 {
856  ADUNCONST(int,ii)
858  int mmin=p->indexmin();
859  int mmax=p->indexmax();
860  int i;
861  for (i=mmin;i<=mmax;i++)
862  {
863  (*this)(i) = (x(ii++));
864  }
865 }
866 // *****************************************************************
867 // *****************************************************************
868 // *****************************************************************
869 
875  const df1b2_init_bounded_vector& _x)
876 {
878  //type=0;
879  //pointer=0;
880  p=&_x;
881  int mmin=x.indexmin();
882  int mmax=x.indexmax();
883  int ind_index = x(mmin).get_ind_index();
884  if (ind_index<0)
885  {
887  }
888  else
889  {
890  add_to_list();
891  }
893  df1b2vector::allocate(mmin,mmax);
895 }
896 
902 {
903  return p->indexmax()-p->indexmin()+1;
904 }
905 
911 {
913  int mmin=p->indexmin();
914  int mmax=p->indexmax();
915  int i;
916  for (i=mmin;i<=mmax;i++)
917  {
918  y(ii)= value((*vp)(i));
919  ii++;
920  }
921 }
922 
928 {
929  int mmin=p->indexmin();
930  int mmax=p->indexmax();
931  int i;
932  for (i=mmin;i<=mmax;i++)
933  {
934  y(ii,1)= ( *(df1b2_init_bounded_vector *)(p) )(i).get_ind_index();
935  y(ii,2)= ii;
936  ii++;
937  }
938 }
939 
945  const int& _ii,const df1b2variable& _pen)
946 {
947  ADUNCONST(int,ii)
950  int mmin=p->indexmin();
951  int mmax=p->indexmax();
952  int i;
953  for (i=mmin;i<=mmax;i++)
954  {
955  (*this)(i) = (x(ii++));
957  {
958  // df1b2variable& tmp = boundp(x(ii++),b.getminb(),b.getmaxb(),pen);
959  // df1b2variable::operator = (tmp);
960  (*this)(i) = (boundp(x(ii++),vp->getminb(),vp->getmaxb()));
961  }
962  else
963  {
964  (*this)(i) = (x(ii));
965  *((*this)(i).get_u()) =
966  boundp(*(x(ii++).get_u()),vp->getminb(),vp->getmaxb());
967  }
968  }
969 }
static int straight_through_flag
Definition: admodel.h:839
static funnel_init_var * inactive_list[2000]
Definition: df1b2fnl.h:73
static adpool * pool
Definition: df1b2fun.h:273
~funnel_init_df1b2vector()
Destructor.
Definition: df1b2fnl.cpp:794
static void allocate_all(void)
Description not yet available.
Definition: df1b2fnl.cpp:130
virtual void set_value(const init_df1b2vector &, const int &ii, const df1b2variable &)
Description not yet available.
Definition: df1b2fnl.cpp:853
df1b2_gradlist * f1b2gradlist
Definition: df1b2glo.cpp:49
static adpool * adpool_vector[]
Definition: df1b2fun.h:282
int indexmax(void) const
Definition: df1b2fun.h:389
static void set_no_derivatives(void)
Definition: df1b2fun.h:760
Description not yet available.
Definition: adrndeff.h:182
void allocate(void)
Description not yet available.
Definition: df1b2fn5.cpp:126
int indexmax() const
Definition: imatrix.h:142
Description not yet available.
Definition: df1b2fun.h:1608
Description not yet available.
Definition: imatrix.h:69
virtual void preallocate(const df1b2variable &)
Description not yet available.
Definition: df1b2fnl.cpp:393
virtual void set_index(imatrix &, int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:707
df1b2variable & operator=(const df3_one_variable &v)
Definition: df3fun.cpp:779
double * get_u() const
Definition: df1b2fun.h:228
const df1b2vector * p
Definition: df1b2fnl.h:165
#define x
#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
Description not yet available.
Definition: df1b2fun.h:1401
Description not yet available.
Definition: df1b2fnl.h:55
static unsigned int nvar_vector[]
Definition: df1b2fun.h:288
static void set_blocksize(void)
Description not yet available.
Definition: df1b2fn2.cpp:89
static int noallocate
Definition: df1b2fun.h:294
static re_objective_function_value * pobjfun
Definition: df1b2fun.h:1693
static int num_inactive_vars
Definition: df1b2fnl.h:66
Description not yet available.
Definition: df1b2fun.h:953
virtual void set_index(imatrix &, int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:831
newadkludge * newadkl
Definition: df1b2fnl.cpp:19
exitptr ad_exit
Definition: gradstrc.cpp:53
int indexmin(void) const
Definition: df1b2fun.h:969
static const int adpool_vectorsize
Definition: df1b2fun.h:278
virtual void xinit(init_df1b2vector &, int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:910
static int maxder
Definition: df1b2fun.h:292
Description not yet available.
Definition: df1b2fun.h:1584
static funnel_init_var * list[2000]
Definition: df1b2fnl.h:71
Description not yet available.
Definition: df1b2fun.h:266
virtual void set_index(imatrix &, int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:927
Description not yet available.
Definition: adpool.h:59
funnel_init_bounded_df1b2vector(const df1b2_init_bounded_vector &x)
Description not yet available.
Definition: df1b2fnl.cpp:874
double * get_u_dot() const
Definition: df1b2fun.h:229
void deallocate(void)
If no other copies exist, free df1b2variable::ptr.
Definition: df1b2fn2.cpp:286
static int adpool_use_index[]
Definition: df1b2fun.h:275
static df1b2variable * funnel_constraints_penalty
Definition: df1b2fnl.h:62
int depth_check(void)
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
Definition: adpool.cpp:19
int * get_v() const
Definition: ivector.h:114
static laplace_approximation_calculator * lapprox
Definition: df1b2fnl.h:61
virtual void set_value(const init_df1b2vector &, const int &ii, const df1b2variable &)
Description not yet available.
Definition: df1b2fnl.cpp:944
prnstream & endl(prnstream &)
double boundpin(double x, double fmin, double fmax, double s)
Scale model variable over [-1,1]; constant objects.
Definition: boundfun.cpp:378
Array of integers(int) with indexes from index_min to indexmax.
Definition: ivector.h:50
void allocate(void)
Description not yet available.
Definition: df1b2fn2.cpp:926
static unsigned int num_active_parameters
Definition: df1b2fnl.h:67
virtual void xinit(init_df1b2vector &, int &ii)=0
static int no_derivatives
Definition: df1b2fun.h:759
Description not yet available.
static imatrix * plist
Definition: df1b2fnl.h:69
virtual void allocate(void)
Description not yet available.
Definition: df1b2fnl.cpp:84
int nvar_calc(void)
Description not yet available.
Definition: df1b2fnl.cpp:901
void deallocate(void)
If no other copies exists, free allocated memory.
Definition: f1b2vc1.cpp:759
virtual void xinit(init_df1b2vector &, int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:811
funnel_init_df1b2variable(void)
Description not yet available.
Definition: df1b2fnl.cpp:373
static void deallocate_all(void)
Release memory.
Definition: df1b2fnl.cpp:106
Description not yet available.
Definition: df1b2fnl.h:115
void add_to_list(void)
Description not yet available.
Definition: df1b2fnl.cpp:42
Description not yet available.
Definition: df1b2fun.h:373
static unsigned int nvar
Definition: df1b2fun.h:290
int indexmax(void) const
Definition: df1b2fun.h:970
static int minder
Definition: df1b2fun.h:291
virtual void set_value(const init_df1b2vector &, const int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:488
Description not yet available.
Definition: df1b2fun.h:1469
dvariable boundp(const prevariable &x, double fmin, double fmax, const prevariable &_fpen, double s)
Compute penalty for exceeding bounds on parameter; variable ojbects.
Definition: boundfun.cpp:89
void add_to_inactive_list(void)
Description not yet available.
Definition: df1b2fnl.cpp:74
int & get_ind_index()
Definition: df1b2fun.h:236
static void increment_adpool_counter(void)
Description not yet available.
Definition: df1b2glo.cpp:24
virtual void xinit(init_df1b2vector &, int &ii)
Description not yet available.
Definition: df1b2fnl.cpp:631
dvector value(const df1_one_vector &v)
Definition: df11fun.cpp:69
virtual void allocate(void)
Description not yet available.
Definition: df1b2fnl.cpp:460
static unsigned int num_vars
Definition: df1b2fnl.h:64
static init_df1b2vector * py
Definition: df1b2fnl.h:68
void check_pool_depths(void)
Description not yet available.
Definition: df1b2fnl.cpp:93
static int adpool_counter
Definition: df1b2fun.h:279
virtual void set_value(const init_df1b2vector &, const int &ii, const df1b2variable &)=0
int nvar_calc(void)
Description not yet available.
Definition: df1b2fnl.cpp:802
void allocate(void)
Initialize df1b2vector to empty.
Definition: f1b2vc1.cpp:627
void reset(void)
Description not yet available.
Definition: df1b2fn2.cpp:581
const df1b2_init_bounded_vector * p
Definition: df1b2fnl.h:146
void delete_from_list(void)
Description not yet available.
Definition: df1b2fnl.cpp:56
funnel_dependent_df1b2variable(const df1b2variable &)
Description not yet available.
Definition: df1b2fnl.cpp:473
virtual void set_index(imatrix &, int &ii)=0
d3_array log(const d3_array &arr3)
Author: David Fournier Copyright (c) 2008-2012 Regents of the University of California.
Definition: d3arr2a.cpp:13
static int current_allocation_index
Definition: df1b2fun.h:274
unsigned int nvar
Definition: adpool.h:77
static unsigned int nvarcalc_all()
Description not yet available.
Definition: df1b2fnl.cpp:614
virtual int nvar_calc(void)=0
static void reset(init_df1b2vector &x)
Description not yet available.
Definition: df1b2fnl.cpp:720