ADMB Documentation  -a65f1c97
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
df1b2f12.cpp
Go to the documentation of this file.
1 
5 #include <df1b2fun.h>
6 #ifndef OPT_LIB
7  #include <cassert>
8  #include <climits>
9 #endif
10 
11 void ad_read_pass2(void);
12 
18  const df1b2variable * _py,df1b2variable * pz,df1b2function2 * pf)
19  {
22  ncount++;
23 #if defined(CHECK_COUNT)
24  if (ncount >= ncount_check)
25  ncount_checker(ncount,ncount_check);
26 #endif
27 
28  unsigned int nvar=df1b2variable::nvar;
29 
30  size_t total_bytes=3*sizeof(df1b2_header)+sizeof(char*)
31  +2*(nvar+1)*sizeof(double);
32 // string identifier debug stuff
33 #if defined(SAFE_ALL)
34  char ids[]="BY";
35  int slen=strlen(ids);
36  total_bytes+=slen;
37 #endif
38  list.check_buffer_size(total_bytes);
39  void * tmpptr=list.bptr;
40 #if defined(SAFE_ALL)
41  memcpy(list,ids,slen);
42 #endif
43 // end of string identifier debug stuff
44 
45  memcpy(list,(df1b2_header*)(px),sizeof(df1b2_header));
46  memcpy(list,(df1b2_header*)(py),sizeof(df1b2_header));
47  memcpy(list,(df1b2_header*)(pz),sizeof(df1b2_header));
48  memcpy(list,&pf,sizeof(char *));
49  //*(char**)(list.bptr)=(char*)pf;
50  memcpy(list,px->get_u(),sizeof(double));
51  memcpy(list,py->get_u(),sizeof(double));
52  memcpy(list,px->get_u_dot(),nvar*sizeof(double));
53  memcpy(list,py->get_u_dot(),nvar*sizeof(double));
54  // ***** write record size
57  ++nlist;
58  return 0;
59  }
60 
61 
62 void read_pass2_1(void);
63 void read_pass2_2(void);
64 void read_pass2_3(void);
65 
70 void ad_read_pass2(void)
71 {
73  {
74  case 1:
75  read_pass2_1();
76  break;
77  case 2:
78  read_pass2_2();
79  break;
80  case 3:
81  read_pass2_3();
82  break;
83  default:
84  cerr << "illegal value for df1b2variable::pass = "
86  ad_exit(1);
87  }
88 }
89 
94 void read_pass2_1(void)
95 {
96  // We are going backword for bptr and nbptr
97  // and forward for bptr2 and nbptr2
98  // the current entry+2 in bptr is the size of the record i.e
99  // points to the next record
100  //char * bptr=f1b2gradlist->bptr;
101  //char * bptr2=f1b2gradlist2->bptr;
102 
103  unsigned int nvar=df1b2variable::nvar;
104 
106  //f1b2gradlist->nlist-=sizeof(int);
107  int num_bytes=f1b2gradlist->nlist.bptr->numbytes;
108  list-=num_bytes;
109  list.saveposition(); // save pointer to beginning of record;
110  double xu,yu;
111  //ad_dstar xdot,ydot;
112  df1b2function2 * pf;
113 
114  // get info from tape1
115 #if defined(SAFE_ARRAYS)
117 #endif
118  char * bptr=f1b2gradlist->list.bptr;
119  df1b2_header * px=(df1b2_header *) bptr;
120  bptr+=sizeof(df1b2_header);
121  df1b2_header * py=(df1b2_header *) bptr;
122  bptr+=sizeof(df1b2_header);
123  df1b2_header * pz=(df1b2_header *) bptr;
124  bptr+=sizeof(df1b2_header);
125  pf=*(df1b2function2 **) bptr;
126  bptr+=sizeof(char*);
127  memcpy(&xu,bptr,sizeof(double));
128  bptr+=sizeof(double);
129  memcpy(&yu,bptr,sizeof(double));
130  bptr+=sizeof(double);
131  double * xdot=(double*)bptr;
132  bptr+=nvar*sizeof(double);
133  double * ydot=(double*)bptr;
134 
135  list.restoreposition(); // save pointer to beginning of record;
136 
137  // ****************************************************************
138  // turn this off if no third derivatives are calculated
139  // if (!no_third_derivatives)
140  // {
141  // save for second reverse pass
142  // save identifier 1
143  test_smartlist & list2 = f1b2gradlist->list2;
144 
145 
146  size_t total_bytes=2*nvar*sizeof(double);
147 // string identifier debug stuff
148 #if defined(SAFE_ALL)
149  char ids[]="FW";
150  int slen=strlen(ids);
151  total_bytes+=slen;
152 #endif
153  list2.check_buffer_size(total_bytes);
154  void * tmpptr=list2.bptr;
155 #if defined(SAFE_ALL)
156  memcpy(list2,ids,slen);
157 #endif
158 
160  memcpy(list2,pz->get_u_bar(),nvar*sizeof(double));
161  memcpy(list2,pz->get_u_dot_bar(),nvar*sizeof(double));
162  *nlist2.bptr=adptr_diff(list2.bptr,tmpptr);
163  ++nlist2;
164  // }
165  //
166  // ****************************************************************
167 #if defined(PRINT_DERS)
168  print_derivatives(pf->funname,(pf->f)(xu,yu),(pf->df1)(xu,yu),
169  (pf->df2)(xu,yu),(pf->d2f11)(xu,yu),(pf->d2f12)(xu,yu),(pf->d2f22)(xu,yu),
170  (pf->d3f111)(xu,yu),(pf->d3f112)(xu,yu),(pf->d3f122)(xu,yu),
171  (pf->d3f222)(xu,yu),1);
172  print_derivatives(pz,"z");
173  print_derivatives(px,"x");
174  print_derivatives(py,"y");
175 #endif
176 #if defined(__DERCHECK__)
177  if (derchecker)
178  if (derchecker->node_number)
179  {
180  if (derchecker->counter == derchecker->node_number)
181  {
182  switch (derchecker->pass_number) // increment the variable of interest
183  {
184  case 2:
185  switch(derchecker->vartype)
186  {
187  case 1:
188  if (!derchecker->dotflag)
189  px->u_bar[derchecker->index-1]+=derchecker->delta;
190  else
191  px->u_dot_bar[derchecker->index-1]+=derchecker->delta;
192  break;
193  case 2:
194  if (!derchecker->dotflag)
195  py->u_bar[derchecker->index-1]+=derchecker->delta;
196  else
197  py->u_dot_bar[derchecker->index-1]+=derchecker->delta;
198  break;
199  case 3:
200  if (!derchecker->dotflag)
201  pz->u_bar[derchecker->index-1]+=derchecker->delta;
202  else
203  pz->u_dot_bar[derchecker->index-1]+=derchecker->delta;
204  break;
205  default:
206  cerr << "Invalid index value for dercheck_index was "
207  << derchecker->index << endl;
208  break;
209  }
210  break;
211  case 3:
212  switch(derchecker->vartype)
213  {
214  case 1:
215  if (!derchecker->dotflag)
216  px->u_bar[derchecker->index-1]-=derchecker->delta;
217  else
218  px->u_dot_bar[derchecker->index-1]-=derchecker->delta;
219  break;
220  case 2:
221  if (!derchecker->dotflag)
222  py->u_bar[derchecker->index-1]-=derchecker->delta;
223  else
224  py->u_dot_bar[derchecker->index-1]-=derchecker->delta;
225  break;
226  case 3:
227  if (!derchecker->dotflag)
228  pz->u_bar[derchecker->index-1]-=derchecker->delta;
229  else
230  pz->u_dot_bar[derchecker->index-1]-=derchecker->delta;
231  break;
232  default:
233  cerr << "Invalid index value for dercheck_index was "
234  << derchecker->index << endl;
235  break;
236  }
237  break;
238  }
239  }
240  }
241 #endif
242 
243  // Do first reverse pass calculations
244  for (size_t i=0;i<nvar;i++)
245  {
246  //double df1=(pf->df1)(xu,yu);
247  px->u_bar[i]+=(pf->df1)(xu,yu)*pz->u_bar[i];
248  }
249  for (size_t i=0;i<nvar;i++)
250  {
251  py->u_bar[i]+=(pf->df2)(xu,yu)*pz->u_bar[i];
252  }
253  for (size_t i=0;i<nvar;i++)
254  {
255  px->u_bar[i]+=(pf->d2f11)(xu,yu)*xdot[i]*pz->u_dot_bar[i];
256  px->u_bar[i]+=(pf->d2f12)(xu,yu)*ydot[i]*pz->u_dot_bar[i];
257 #if defined(ADDEBUG_PRINT)
258  cout << px->u_bar[i] << " " << pz->u_dot_bar[i] << " " << addebug_count
259  << endl;
260 #endif
261  }
262  for (size_t i=0;i<nvar;i++)
263  {
264  //py->u_bar[i]+=(pf->d2f22)(*(px->u),*(py->u))*ydot[i]*pz->u_dot_bar[i];
265  //py->u_bar[i]+=(pf->d2f12)(*(px->u),*(py->u))*xdot[i]*pz->u_dot_bar[i];
266  py->u_bar[i]+=(pf->d2f22)(xu,yu)*ydot[i]*pz->u_dot_bar[i];
267  py->u_bar[i]+=(pf->d2f12)(xu,yu)*xdot[i]*pz->u_dot_bar[i];
268 #if defined(ADDEBUG_PRINT)
269  cout << py->u_bar[i] << " " << pz->u_dot_bar[i] << " " << addebug_count
270  << endl;
271 #endif
272  }
273  for (size_t i=0;i<nvar;i++)
274  {
275  //px->u_dot_bar[i]+=(pf->df1)(*(px->u),*(py->u))*pz->u_dot_bar[i];
276  px->u_dot_bar[i]+=(pf->df1)(xu,yu)*pz->u_dot_bar[i];
277 #if defined(ADDEBUG_PRINT)
278  cout << px->u_dot_bar[i] << " " << addebug_count << endl;
279  cout << pz->u_dot_bar[i] << " " << addebug_count << endl;
280 #endif
281  }
282  for (size_t i=0;i<nvar;i++)
283  {
284  py->u_dot_bar[i]+=(pf->df2)(xu,yu)*pz->u_dot_bar[i];
285 #if defined(ADDEBUG_PRINT)
286  cout << py->u_dot_bar[i] << " " << addebug_count << endl;
287  cout << pz->u_dot_bar[i] << " " << addebug_count << endl;
288 #endif
289  }
290 
291  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
292  for (size_t i=0;i<nvar;i++)
293  {
294  pz->u_bar[i]=0;
295  }
296  for (size_t i=0;i<nvar;i++)
297  {
298  pz->u_dot_bar[i]=0;
299  }
300 
301 #if defined(PRINT_DERS)
302  print_derivatives(pz,"z");
303  print_derivatives(px,"x");
304  print_derivatives(py,"y");
305 #endif
306 }
307 
312 void read_pass2_2(void)
313 {
314  //const int nlist_record_size=sizeof(int)+sizeof(char*);
315  // We are going forward for bptr and backword for bptr2
316  //
317  // list 1
318  //
319 
320  unsigned int nvar=df1b2variable::nvar;
321 
323 
324  size_t total_bytes=3*sizeof(df1b2_header)+sizeof(char*)
325  +2*(nvar+1)*sizeof(double);
326 // string identifier debug stuff
327 #if defined(SAFE_ALL)
328  char ids[]="BY";
329  int slen=strlen(ids);
330  total_bytes+=slen;
331 #endif
332  list.check_buffer_size(total_bytes);
333 // end of string identifier debug stuff
334 
335  list.saveposition(); // save pointer to beginning of record;
337  // nlist-=sizeof(int);
338  // get record size
339  int num_bytes=nlist.bptr->numbytes;
340  // nlist+=nlist_record_size;
341  //
342  // list 2
343  //
346  // get record size
347  int num_bytes2=*nlist2.bptr;
348  --nlist2;
349  // backup the size of the record
350  list2-=num_bytes2;
351  list2.saveposition(); // save pointer to beginning of record;
352  // save the pointer to the beginning of the record
353  // bptr and bptr2 now both point to the beginning of their records
354 
355  double xu,yu;
356  double * xdot;
357  double * ydot;
358  //df1b2_header x,z;
359  df1b2function2 * pf;
360 
361  // get info from tape1
362  // get info from tape1
363 #if defined(SAFE_ARRAYS)
364  checkidentiferstring("BY",list);
365  checkidentiferstring("FW",list2);
366 #endif
367  df1b2_header * px=(df1b2_header *) list.bptr;
368  list.bptr+=sizeof(df1b2_header);
369  df1b2_header * py=(df1b2_header *) list.bptr;
370  list.bptr+=sizeof(df1b2_header);
371  df1b2_header * pz=(df1b2_header *) list.bptr;
372  list.bptr+=sizeof(df1b2_header);
373  pf=*(df1b2function2 **) list.bptr;
374  list.bptr+=sizeof(char*);
375  memcpy(&xu,list.bptr,sizeof(double));
376  list.bptr+=sizeof(double);
377  memcpy(&yu,list.bptr,sizeof(double));
378  list.bptr+=sizeof(double);
379  xdot=(double*)list.bptr;
380  list.bptr+=nvar*sizeof(double);
381  ydot=(double*)list.bptr;
382  list.restoreposition(num_bytes); // save pointer to beginning of record;
383 
384  double * zbar;
385  double * zdotbar;
386 
387  zbar=(double*)list2.bptr;
388  zdotbar=(double*)(list2.bptr+nvar*sizeof(double));
389  list2.restoreposition(); // save pointer to beginning of record;
390 
391  double * x_tilde=px->get_u_tilde();
392  double * x_dot_tilde=px->get_u_dot_tilde();
393  double * x_bar_tilde=px->get_u_bar_tilde();
394  double * x_dot_bar_tilde=px->get_u_dot_bar_tilde();
395  double * y_tilde=py->get_u_tilde();
396  double * y_dot_tilde=py->get_u_dot_tilde();
397  double * y_bar_tilde=py->get_u_bar_tilde();
398  double * y_dot_bar_tilde=py->get_u_dot_bar_tilde();
399  double * z_bar_tilde=pz->get_u_bar_tilde();
400  double * z_dot_bar_tilde=pz->get_u_dot_bar_tilde();
401  // Do second "reverse-reverse" pass calculations
402 #if defined(PRINT_DERS)
403  print_derivatives(pf->funname,(pf->f)(xu,yu),(pf->df1)(xu,yu),
404  (pf->df2)(xu,yu),(pf->d2f11)(xu,yu),(pf->d2f12)(xu,yu),(pf->d2f22)(xu,yu),
405  (pf->d3f111)(xu,yu),(pf->d3f112)(xu,yu),(pf->d3f122)(xu,yu),
406  (pf->d3f222)(xu,yu),1);
407  print_derivatives(pz,"z");
408  print_derivatives(px,"x");
409  print_derivatives(py,"y");
410 #endif
411 
412  for (size_t i=0;i<nvar;i++)
413  {
414  z_bar_tilde[i]=0;
415  z_dot_bar_tilde[i]=0;
416  }
417 
418  // start with x and add y
419  for (size_t i=0;i<nvar;i++)
420  {
421  *x_tilde+=(pf->d2f11)(xu,yu)*zbar[i]*x_bar_tilde[i];
422  z_bar_tilde[i]+=(pf->df1)(xu,yu)*x_bar_tilde[i];
423  *y_tilde+=(pf->d2f12)(xu,yu)*zbar[i]*x_bar_tilde[i];
424  }
425 
426  for (size_t i=0;i<nvar;i++)
427  {
428  *x_tilde+=(pf->d2f11)(xu,yu)*zdotbar[i]*x_dot_bar_tilde[i];
429  *y_tilde+=(pf->d2f12)(xu,yu)*zdotbar[i]*x_dot_bar_tilde[i];
430  z_dot_bar_tilde[i]+=(pf->df1)(xu,yu)*x_dot_bar_tilde[i];
431  }
432 
433  for (size_t i=0;i<nvar;i++)
434  {
435  x_dot_tilde[i]+=(pf->d2f11)(xu,yu)*zdotbar[i]*x_bar_tilde[i];
436  z_dot_bar_tilde[i]+=(pf->d2f11)(xu,yu)*xdot[i]*x_bar_tilde[i];
437  *x_tilde+=(pf->d3f111)(xu,yu)*xdot[i]*zdotbar[i]*x_bar_tilde[i];
438  *y_tilde+=(pf->d3f112)(xu,yu)*xdot[i]*zdotbar[i]*x_bar_tilde[i];
439  }
440  // start with y and add x
441  for (size_t i=0;i<nvar;i++)
442  {
443  *y_tilde+=(pf->d2f22)(xu,yu)*zbar[i]*y_bar_tilde[i];
444  *x_tilde+=(pf->d2f12)(xu,yu)*zbar[i]*y_bar_tilde[i];
445  z_bar_tilde[i]+=(pf->df2)(xu,yu)*y_bar_tilde[i];
446  }
447 
448  for (size_t i=0;i<nvar;i++)
449  {
450  *y_tilde+=(pf->d2f22)(xu,yu)*zdotbar[i]*y_dot_bar_tilde[i];
451  *x_tilde+=(pf->d2f12)(xu,yu)*zdotbar[i]*y_dot_bar_tilde[i];
452  z_dot_bar_tilde[i]+=(pf->df2)(xu,yu)*y_dot_bar_tilde[i];
453  }
454 
455  for (size_t i=0;i<nvar;i++)
456  {
457  y_dot_tilde[i]+=(pf->d2f22)(xu,yu)*zdotbar[i]*y_bar_tilde[i];
458  z_dot_bar_tilde[i]+=(pf->d2f22)(xu,yu)*ydot[i]*y_bar_tilde[i];
459  *y_tilde+=(pf->d3f222)(xu,yu)*ydot[i]*zdotbar[i]*y_bar_tilde[i];
460  *x_tilde+=(pf->d3f122)(xu,yu)*ydot[i]*zdotbar[i]*y_bar_tilde[i];
461  }
462  for (size_t i=0;i<nvar;i++)
463  {
464  *x_tilde+=(pf->d3f112)(xu,yu)*ydot[i]*zdotbar[i]*x_bar_tilde[i];
465  *y_tilde+=(pf->d3f122)(xu,yu)*ydot[i]*zdotbar[i]*x_bar_tilde[i];
466  y_dot_tilde[i]+=(pf->d2f12)(xu,yu)*zdotbar[i]*x_bar_tilde[i];
467  z_dot_bar_tilde[i]+=(pf->d2f12)(xu,yu)*ydot[i]*x_bar_tilde[i];
468  }
469  for (size_t i=0;i<nvar;i++)
470  {
471  *x_tilde+=(pf->d3f112)(xu,yu)*xdot[i]*zdotbar[i]*y_bar_tilde[i];
472  *y_tilde+=(pf->d3f122)(xu,yu)*xdot[i]*zdotbar[i]*y_bar_tilde[i];
473  x_dot_tilde[i]+=(pf->d2f12)(xu,yu)*zdotbar[i]*y_bar_tilde[i];
474  z_dot_bar_tilde[i]+=(pf->d2f12)(xu,yu)*xdot[i]*y_bar_tilde[i];
475  }
476 #if defined(__DERCHECK__)
477  if (derchecker->node_number)
478  {
479  if (derchecker->counter == derchecker->node_number)
480  {
481  if (derchecker->pass_number==1) // increment the variable of interest
482  {
483  switch(derchecker->vartype)
484  {
485  case 1:
486  if (!derchecker->dotflag)
487  derchecker->der_value=
488  px->u_bar_tilde[derchecker->index-1];
489  else
490  derchecker->der_value=
491  px->u_dot_bar_tilde[derchecker->index-1];
492  break;
493  case 2:
494  if (!derchecker->dotflag)
495  derchecker->der_value=
496  py->u_bar_tilde[derchecker->index-1];
497  else
498  derchecker->der_value=
499  py->u_dot_bar_tilde[derchecker->index-1];
500  break;
501  case 3:
502  if (!derchecker->dotflag)
503  derchecker->der_value=
504  pz->u_bar_tilde[derchecker->index-1];
505  else
506  derchecker->der_value=
507  pz->u_dot_bar_tilde[derchecker->index-1];
508  break;
509  default:
510  cerr << "Invalid index value for dercheck_index was "
511  << derchecker->index << endl;
512  }
513  }
514  }
515  }
516 #endif
517 #if defined(PRINT_DERS)
518  print_derivatives(pz,"z");
519  print_derivatives(px,"x");
520  print_derivatives(py,"y");
521 #endif
522 }
523 
528 void read_pass2_3(void)
529 {
530  // We are going backword for bptr and forward for bptr2
531  // the current entry+2 in bptr is the size of the record i.e
532  // points to the next record
533 
534  unsigned int nvar=df1b2variable::nvar;
535 
538  // nlist-=sizeof(int);
539  // get record size
540  int num_bytes=nlist.bptr->numbytes;
541  // backup the size of the record
542  list-=num_bytes;
543  list.saveposition(); // save pointer to beginning of record;
544  // save the pointer to the beginning of the record
545  double xu;
546  double yu;
547  double * xdot;
548  double * ydot;
549  //df1b2_header x,z;
550  df1b2function2 * pf;
551 
552  // get info from tape1
553  // get info from tape1
554 #if defined(SAFE_ARRAYS)
555  checkidentiferstring("BY",list);
556 #endif
557  df1b2_header * px=(df1b2_header *) list.bptr;
558  list.bptr+=sizeof(df1b2_header);
559  df1b2_header * py=(df1b2_header *) list.bptr;
560  list.bptr+=sizeof(df1b2_header);
561  df1b2_header * pz=(df1b2_header *) list.bptr;
562  list.bptr+=sizeof(df1b2_header);
563  pf=*(df1b2function2 **) list.bptr;
564  list.bptr+=sizeof(char*);
565  memcpy(&xu,list.bptr,sizeof(double));
566  list.bptr+=sizeof(double);
567  memcpy(&yu,list.bptr,sizeof(double));
568  list.bptr+=sizeof(double);
569  xdot=(double*)list.bptr;
570  list.bptr+=nvar*sizeof(double);
571  ydot=(double*)list.bptr;
572  list.restoreposition(); // save pointer to beginning of record;
573 #if defined(PRINT_DERS)
574  print_derivatives(pf->funname,(pf->f)(xu,yu),(pf->df1)(xu,yu),
575  (pf->df2)(xu,yu),(pf->d2f11)(xu,yu),(pf->d2f12)(xu,yu),(pf->d2f22)(xu,yu),
576  (pf->d3f111)(xu,yu),(pf->d3f112)(xu,yu),(pf->d3f122)(xu,yu),
577  (pf->d3f222)(xu,yu),1);
578  print_derivatives(pz,"z");
579  print_derivatives(px,"x");
580  print_derivatives(py,"y");
581 #endif
582 
583  *(px->u_tilde)+=(pf->df1)(xu,yu)* *(pz->u_tilde);
584  *(py->u_tilde)+=(pf->df2)(xu,yu)* *(pz->u_tilde);
585  for (size_t i=0;i<nvar;i++)
586  {
587  *(px->u_tilde)+=(pf->d2f11)(xu,yu)*xdot[i]*pz->u_dot_tilde[i];
588  *(py->u_tilde)+=(pf->d2f12)(xu,yu)*xdot[i]*pz->u_dot_tilde[i];
589  *(py->u_tilde)+=(pf->d2f22)(xu,yu)*ydot[i]*pz->u_dot_tilde[i];
590  *(px->u_tilde)+=(pf->d2f12)(xu,yu)*ydot[i]*pz->u_dot_tilde[i];
591  }
592  for (size_t i=0;i<nvar;i++)
593  {
594  px->u_dot_tilde[i]+=(pf->df1)(xu,yu)*pz->u_dot_tilde[i];
595  py->u_dot_tilde[i]+=(pf->df2)(xu,yu)*pz->u_dot_tilde[i];
596  }
597  *(pz->u_tilde)=0;
598  for (size_t i=0;i<nvar;i++)
599  {
600  pz->u_dot_tilde[i]=0;
601  }
602 #if defined(PRINT_DERS)
603  print_derivatives(pz,"z");
604  print_derivatives(px,"x");
605  print_derivatives(py,"y");
606 #endif
607 }
char * bptr
Definition: df1b2fun.h:543
double * get_u_bar_tilde() const
Definition: df1b2fun.h:234
void ad_read_pass2(void)
Description not yet available.
Definition: df1b2f12.cpp:70
double(* d3f222)(double, double)
Definition: df1b2fun.h:443
void check_buffer_size(const size_t)
Description not yet available.
Definition: df1b2f10.cpp:185
df1b2_gradlist * f1b2gradlist
Definition: df1b2glo.cpp:49
double(* d3f122)(double, double)
Definition: df1b2fun.h:442
void memcpy(test_smartlist &dest, void *source, const size_t nsize)
memcpy for test_smartlist
Definition: df1b2f10.cpp:367
void read_pass2_3(void)
Description not yet available.
Definition: df1b2f12.cpp:528
double * u_bar_tilde
Definition: df1b2fun.h:201
double * u_bar
Definition: df1b2fun.h:197
#define ADUNCONST(type, obj)
Creates a shallow copy of obj that is not CONST.
Definition: fvar.hpp:140
double(* d3f111)(double, double)
Definition: df1b2fun.h:440
double(* d3f112)(double, double)
Definition: df1b2fun.h:441
static int passnumber
Definition: df1b2fun.h:289
double * get_u_dot_tilde() const
Definition: df1b2fun.h:233
double(* f)(double, double)
Definition: df1b2fun.h:434
double(* d2f22)(double, double)
Definition: df1b2fun.h:439
int adptr_diff(void *x, void *y)
Definition: df1b2fn2.cpp:110
exitptr ad_exit
Definition: gradstrc.cpp:53
void ncount_checker(int ncount, int ncount_check)
double * u_tilde
Definition: df1b2fun.h:199
void restoreposition(void)
Definition: df1b2fun.h:560
Description not yet available.
Definition: df1b2fun.h:266
Description not yet available.
Definition: df1b2fun.h:669
fixed_smartlist nlist
Definition: df1b2fun.h:754
double * u_dot_bar_tilde
Definition: df1b2fun.h:202
void read_pass2_2(void)
Description not yet available.
Definition: df1b2f12.cpp:312
Description not yet available.
Definition: df1b2fun.h:602
adstring funname
Definition: df1b2fun.h:444
prnstream & endl(prnstream &)
double * u_dot_bar
Definition: df1b2fun.h:198
test_smartlist list
Definition: df1b2fun.h:753
void print_derivatives(const adstring &s, double f, double df, double d2f, double d3f, int bflag)
Description not yet available.
Definition: df1b2fn3.cpp:27
ADrfptr pf
Definition: df1b2fun.h:595
fixed_smartlist2 nlist2
Definition: df1b2fun.h:756
double(* d2f11)(double, double)
Definition: df1b2fun.h:437
double(* df2)(double, double)
Definition: df1b2fun.h:436
Description not yet available.
Definition: df1b2fun.h:527
double * get_u_dot_bar() const
Definition: df1b2fun.h:231
Description not yet available.
Definition: df1b2fun.h:431
double * get_u_tilde() const
Definition: df1b2fun.h:232
double(* d2f12)(double, double)
Definition: df1b2fun.h:438
int write_pass1(const df1b2variable *px, const df1b2variable *py, df1b2variable *pz, df1b2function2 *pf)
Description not yet available.
Definition: df1b2f12.cpp:17
double * get_u_dot_bar_tilde() const
Definition: df1b2fun.h:235
static unsigned int nvar
Definition: df1b2fun.h:290
void(* ADrfptr)(void)
Definition: df1b2fun.cpp:139
double * u_dot_tilde
Definition: df1b2fun.h:200
Base class for df1b2variable.
Definition: df1b2fun.h:191
Description not yet available.
fixed_list_entry * bptr
Definition: df1b2fun.h:626
void checkidentiferstring(const char *ids, test_smartlist &list)
Description not yet available.
Definition: df1b2fn5.cpp:256
double(* df1)(double, double)
Definition: df1b2fun.h:435
double * get_u_bar() const
Definition: df1b2fun.h:230
void read_pass2_1(void)
Description not yet available.
Definition: df1b2f12.cpp:94
int numbytes
Definition: df1b2fun.h:594
void saveposition(void)
Definition: df1b2fun.h:552
test_smartlist list2
Definition: df1b2fun.h:755