14 #define ADT_RAD Sacado::Rad::
56 botch(
const char *what,
double wanted,
double got)
60 printf(
"%s: expected %g, got %g, diff = %.2g\n", what, wanted, got, wanted-got);
68 const double tol = 5e-16;
112 #ifdef RAD_AUTO_AD_Const
138 double dx, dy,
f, xd, yd;
151 xd = 2.; yd = 3.; f = 0.; dx = 0.; dy = 0.;
156 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yAI)", f, fA.val());
157 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yAI)/dx", dx, xAI.adj());
158 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xAI,yAI)/dy", dy, yAI.adj());
165 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yAI)", f, fA.val());
166 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yAI)/dx", dx, xcAI.adj());
167 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xcAI,yAI)/dy", dy, yAI.adj());
175 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,ycAI)", f, fA.val());
176 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,ycAI)/dx", dx, xAI.adj());
177 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xAI,ycAI)/dy", dy, ycAI.adj());
185 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,ycAI)", f, fA.val());
186 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,ycAI)/dx", dx, xcAI.adj());
187 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xcAI,ycAI)/dy", dy, ycAI.adj());
193 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yA)", f, fA.val());
194 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yA)/dx", dx, xAI.adj());
195 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xAI,yA)/dy", dy, yA.adj());
202 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yA)", f, fA.val());
203 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yA)/dx", dx, xcAI.adj());
204 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xcAI,yA)/dy", dy, yA.adj());
212 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,ycA)", f, fA.val());
213 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,ycA)/dx", dx, xAI.adj());
214 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xAI,ycA)/dy", dy, ycA.adj());
222 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,ycA)", f, fA.val());
223 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,ycA)/dx", dx, xcAI.adj());
224 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xcAI,ycA)/dy", dy, ycA.adj());
230 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yC)", f, fA.val());
231 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yC)/dx", dx, xAI.adj());
232 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xAI,yC)/dy", dy, yC.adj());
239 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yC)", f, fA.val());
240 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yC)/dx", dx, xcAI.adj());
241 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xcAI,yC)/dy", dy, yC.adj());
249 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,ycC)", f, fA.val());
250 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,ycC)/dx", dx, xAI.adj());
251 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xAI,ycC)/dy", dy, ycC.adj());
259 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,ycC)", f, fA.val());
260 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,ycC)/dx", dx, xcAI.adj());
261 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xcAI,ycC)/dy", dy, ycC.adj());
268 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yAi)", f, fA.val());
269 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yAi)/dx", dx, xAI.adj());
270 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xAI,yAi)/dy", dy, yAi.aval);
278 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yAi)", f, fA.val());
279 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yAi)/dx", dx, xcAI.adj());
280 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xcAI,yAi)/dy", dy, yAi.aval);
288 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,ycAi)", f, fA.val());
289 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,ycAi)/dx", dx, xAI.adj());
290 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xAI,ycAi)/dy", dy, ycAi.aval);
298 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,ycAi)", f, fA.val());
299 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,ycAi)/dx", dx, xcAI.adj());
300 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xcAI,ycAi)/dy", dy, ycAi.aval);
305 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yd)", f, fA.val());
306 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yd)/dx", dx, xAI.adj());
312 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yd)", f, fA.val());
313 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yd)/dx", dx, xcAI.adj());
319 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yL)", f, fA.val());
320 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yL)/dx", dx, xAI.adj());
327 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yL)", f, fA.val());
328 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yL)/dx", dx, xcAI.adj());
334 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAI,yi)", f, fA.val());
335 else if (
differ(xAI.adj(),
dx))
botch(
"d operator==(xAI,yi)/dx", dx, xAI.adj());
342 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAI,yi)", f, fA.val());
343 else if (
differ(xcAI.adj(),
dx))
botch(
"d operator==(xcAI,yi)/dx", dx, xcAI.adj());
349 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yAI)", f, fA.val());
350 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yAI)/dx", dx, xA.adj());
351 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xA,yAI)/dy", dy, yAI.adj());
358 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yAI)", f, fA.val());
359 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yAI)/dx", dx, xcA.adj());
360 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xcA,yAI)/dy", dy, yAI.adj());
368 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,ycAI)", f, fA.val());
369 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,ycAI)/dx", dx, xA.adj());
370 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xA,ycAI)/dy", dy, ycAI.adj());
378 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,ycAI)", f, fA.val());
379 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,ycAI)/dx", dx, xcA.adj());
380 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xcA,ycAI)/dy", dy, ycAI.adj());
386 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yA)", f, fA.val());
387 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yA)/dx", dx, xA.adj());
388 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xA,yA)/dy", dy, yA.adj());
395 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yA)", f, fA.val());
396 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yA)/dx", dx, xcA.adj());
397 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xcA,yA)/dy", dy, yA.adj());
405 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,ycA)", f, fA.val());
406 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,ycA)/dx", dx, xA.adj());
407 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xA,ycA)/dy", dy, ycA.adj());
415 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,ycA)", f, fA.val());
416 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,ycA)/dx", dx, xcA.adj());
417 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xcA,ycA)/dy", dy, ycA.adj());
423 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yC)", f, fA.val());
424 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yC)/dx", dx, xA.adj());
425 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xA,yC)/dy", dy, yC.adj());
432 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yC)", f, fA.val());
433 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yC)/dx", dx, xcA.adj());
434 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xcA,yC)/dy", dy, yC.adj());
442 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,ycC)", f, fA.val());
443 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,ycC)/dx", dx, xA.adj());
444 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xA,ycC)/dy", dy, ycC.adj());
452 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,ycC)", f, fA.val());
453 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,ycC)/dx", dx, xcA.adj());
454 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xcA,ycC)/dy", dy, ycC.adj());
461 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yAi)", f, fA.val());
462 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yAi)/dx", dx, xA.adj());
463 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xA,yAi)/dy", dy, yAi.aval);
471 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yAi)", f, fA.val());
472 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yAi)/dx", dx, xcA.adj());
473 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xcA,yAi)/dy", dy, yAi.aval);
481 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,ycAi)", f, fA.val());
482 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,ycAi)/dx", dx, xA.adj());
483 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xA,ycAi)/dy", dy, ycAi.aval);
491 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,ycAi)", f, fA.val());
492 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,ycAi)/dx", dx, xcA.adj());
493 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xcA,ycAi)/dy", dy, ycAi.aval);
498 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yd)", f, fA.val());
499 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yd)/dx", dx, xA.adj());
505 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yd)", f, fA.val());
506 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yd)/dx", dx, xcA.adj());
512 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yL)", f, fA.val());
513 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yL)/dx", dx, xA.adj());
520 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yL)", f, fA.val());
521 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yL)/dx", dx, xcA.adj());
527 if (
differ(fA.val(), f))
botch(
"fA = operator==(xA,yi)", f, fA.val());
528 else if (
differ(xA.adj(),
dx))
botch(
"d operator==(xA,yi)/dx", dx, xA.adj());
535 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcA,yi)", f, fA.val());
536 else if (
differ(xcA.adj(),
dx))
botch(
"d operator==(xcA,yi)/dx", dx, xcA.adj());
542 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yAI)", f, fA.val());
543 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yAI)/dx", dx, xC.adj());
544 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xC,yAI)/dy", dy, yAI.adj());
551 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yAI)", f, fA.val());
552 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yAI)/dx", dx, xcC.adj());
553 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xcC,yAI)/dy", dy, yAI.adj());
561 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,ycAI)", f, fA.val());
562 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,ycAI)/dx", dx, xC.adj());
563 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xC,ycAI)/dy", dy, ycAI.adj());
571 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,ycAI)", f, fA.val());
572 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,ycAI)/dx", dx, xcC.adj());
573 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xcC,ycAI)/dy", dy, ycAI.adj());
579 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yA)", f, fA.val());
580 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yA)/dx", dx, xC.adj());
581 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xC,yA)/dy", dy, yA.adj());
588 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yA)", f, fA.val());
589 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yA)/dx", dx, xcC.adj());
590 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xcC,yA)/dy", dy, yA.adj());
598 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,ycA)", f, fA.val());
599 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,ycA)/dx", dx, xC.adj());
600 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xC,ycA)/dy", dy, ycA.adj());
608 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,ycA)", f, fA.val());
609 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,ycA)/dx", dx, xcC.adj());
610 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xcC,ycA)/dy", dy, ycA.adj());
616 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yC)", f, fA.val());
617 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yC)/dx", dx, xC.adj());
618 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xC,yC)/dy", dy, yC.adj());
625 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yC)", f, fA.val());
626 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yC)/dx", dx, xcC.adj());
627 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xcC,yC)/dy", dy, yC.adj());
635 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,ycC)", f, fA.val());
636 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,ycC)/dx", dx, xC.adj());
637 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xC,ycC)/dy", dy, ycC.adj());
645 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,ycC)", f, fA.val());
646 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,ycC)/dx", dx, xcC.adj());
647 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xcC,ycC)/dy", dy, ycC.adj());
654 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yAi)", f, fA.val());
655 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yAi)/dx", dx, xC.adj());
656 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xC,yAi)/dy", dy, yAi.aval);
664 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yAi)", f, fA.val());
665 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yAi)/dx", dx, xcC.adj());
666 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xcC,yAi)/dy", dy, yAi.aval);
674 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,ycAi)", f, fA.val());
675 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,ycAi)/dx", dx, xC.adj());
676 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xC,ycAi)/dy", dy, ycAi.aval);
684 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,ycAi)", f, fA.val());
685 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,ycAi)/dx", dx, xcC.adj());
686 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xcC,ycAi)/dy", dy, ycAi.aval);
691 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yd)", f, fA.val());
692 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yd)/dx", dx, xC.adj());
698 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yd)", f, fA.val());
699 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yd)/dx", dx, xcC.adj());
705 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yL)", f, fA.val());
706 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yL)/dx", dx, xC.adj());
713 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yL)", f, fA.val());
714 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yL)/dx", dx, xcC.adj());
720 if (
differ(fA.val(), f))
botch(
"fA = operator==(xC,yi)", f, fA.val());
721 else if (
differ(xC.adj(),
dx))
botch(
"d operator==(xC,yi)/dx", dx, xC.adj());
728 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcC,yi)", f, fA.val());
729 else if (
differ(xcC.adj(),
dx))
botch(
"d operator==(xcC,yi)/dx", dx, xcC.adj());
736 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yAI)", f, fA.val());
737 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yAI)/dx", dx, xAi.aval);
738 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xAi,yAI)/dy", dy, yAI.adj());
746 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yAI)", f, fA.val());
747 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yAI)/dx", dx, xcAi.aval);
748 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xcAi,yAI)/dy", dy, yAI.adj());
756 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,ycAI)", f, fA.val());
757 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,ycAI)/dx", dx, xAi.aval);
758 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xAi,ycAI)/dy", dy, ycAI.adj());
765 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yA)", f, fA.val());
766 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yA)/dx", dx, xAi.aval);
767 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xAi,yA)/dy", dy, yA.adj());
775 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yA)", f, fA.val());
776 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yA)/dx", dx, xcAi.aval);
777 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xcAi,yA)/dy", dy, yA.adj());
785 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,ycA)", f, fA.val());
786 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,ycA)/dx", dx, xAi.aval);
787 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xAi,ycA)/dy", dy, ycA.adj());
794 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yC)", f, fA.val());
795 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yC)/dx", dx, xAi.aval);
796 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xAi,yC)/dy", dy, yC.adj());
804 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yC)", f, fA.val());
805 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yC)/dx", dx, xcAi.aval);
806 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xcAi,yC)/dy", dy, yC.adj());
814 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,ycC)", f, fA.val());
815 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,ycC)/dx", dx, xAi.aval);
816 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xAi,ycC)/dy", dy, ycC.adj());
823 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yAi)", f, fA.val());
824 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yAi)/dx", dx, xAi.aval);
825 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xAi,yAi)/dy", dy, yAi.aval);
833 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yAi)", f, fA.val());
834 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yAi)/dx", dx, xcAi.aval);
835 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xcAi,yAi)/dy", dy, yAi.aval);
843 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,ycAi)", f, fA.val());
844 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,ycAi)/dx", dx, xAi.aval);
845 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xAi,ycAi)/dy", dy, ycAi.aval);
851 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yd)", f, fA.val());
852 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yd)/dx", dx, xAi.aval);
859 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yd)", f, fA.val());
860 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yd)/dx", dx, xcAi.aval);
867 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yL)", f, fA.val());
868 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yL)/dx", dx, xAi.aval);
876 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yL)", f, fA.val());
877 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yL)/dx", dx, xcAi.aval);
884 if (
differ(fA.val(), f))
botch(
"fA = operator==(xAi,yi)", f, fA.val());
885 else if (
differ(xAi.aval, dx))
botch(
"d operator==(xAi,yi)/dx", dx, xAi.aval);
893 if (
differ(fA.val(), f))
botch(
"fA = operator==(xcAi,yi)", f, fA.val());
894 else if (
differ(xcAi.aval, dx))
botch(
"d operator==(xcAi,yi)/dx", dx, xcAi.aval);
899 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,yAI)", f, fA.val());
900 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xd,yAI)/dy", dy, yAI.adj());
906 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,ycAI)", f, fA.val());
907 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xd,ycAI)/dy", dy, ycAI.adj());
912 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,yA)", f, fA.val());
913 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xd,yA)/dy", dy, yA.adj());
919 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,ycA)", f, fA.val());
920 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xd,ycA)/dy", dy, ycA.adj());
925 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,yC)", f, fA.val());
926 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xd,yC)/dy", dy, yC.adj());
932 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,ycC)", f, fA.val());
933 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xd,ycC)/dy", dy, ycC.adj());
939 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,yAi)", f, fA.val());
940 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xd,yAi)/dy", dy, yAi.aval);
947 if (
differ(fA.val(), f))
botch(
"fA = operator==(xd,ycAi)", f, fA.val());
948 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xd,ycAi)/dy", dy, ycAi.aval);
954 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,yAI)", f, fA.val());
955 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xL,yAI)/dy", dy, yAI.adj());
962 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,ycAI)", f, fA.val());
963 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xL,ycAI)/dy", dy, ycAI.adj());
969 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,yA)", f, fA.val());
970 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xL,yA)/dy", dy, yA.adj());
977 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,ycA)", f, fA.val());
978 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xL,ycA)/dy", dy, ycA.adj());
984 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,yC)", f, fA.val());
985 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xL,yC)/dy", dy, yC.adj());
992 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,ycC)", f, fA.val());
993 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xL,ycC)/dy", dy, ycC.adj());
1000 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,yAi)", f, fA.val());
1001 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xL,yAi)/dy", dy, yAi.aval);
1009 if (
differ(fA.val(), f))
botch(
"fA = operator==(xL,ycAi)", f, fA.val());
1010 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xL,ycAi)/dy", dy, ycAi.aval);
1016 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,yAI)", f, fA.val());
1017 else if (
differ(yAI.adj(), dy))
botch(
"d operator==(xi,yAI)/dy", dy, yAI.adj());
1024 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,ycAI)", f, fA.val());
1025 else if (
differ(ycAI.adj(), dy))
botch(
"d operator==(xi,ycAI)/dy", dy, ycAI.adj());
1031 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,yA)", f, fA.val());
1032 else if (
differ(yA.adj(), dy))
botch(
"d operator==(xi,yA)/dy", dy, yA.adj());
1039 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,ycA)", f, fA.val());
1040 else if (
differ(ycA.adj(), dy))
botch(
"d operator==(xi,ycA)/dy", dy, ycA.adj());
1046 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,yC)", f, fA.val());
1047 else if (
differ(yC.adj(), dy))
botch(
"d operator==(xi,yC)/dy", dy, yC.adj());
1054 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,ycC)", f, fA.val());
1055 else if (
differ(ycC.adj(), dy))
botch(
"d operator==(xi,ycC)/dy", dy, ycC.adj());
1062 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,yAi)", f, fA.val());
1063 else if (
differ(yAi.aval, dy))
botch(
"d operator==(xi,yAi)/dy", dy, yAi.aval);
1071 if (
differ(fA.val(), f))
botch(
"fA = operator==(xi,ycAi)", f, fA.val());
1072 else if (
differ(ycAi.aval, dy))
botch(
"d operator==(xi,ycAi)/dy", dy, ycAi.aval);
ADT_RAD ADvari< double > Ai
int botch(ExpectedAnswer *e, const char *partial, double got, double wanted)
ADT_RAD IndepADvar< double > AI
const ADT_RAD IndepADvar< double > cAI
const ADT_RAD ADvari< double > cAi
static int differ(double a, double b)
bool operator==(const Handle< T > &h1, const Handle< T > &h2)
Compare two handles.
const ADT_RAD ConstADvar< double > cC
const ADT_RAD ADvar< double > cA