tradoptest_19.cpp

Go to the documentation of this file.
00001 
00002 
00003 /* Try to test all combinations of types and operations */
00004 
00005 
00006 
00007 #define ADT_RAD Sacado::Rad::
00008 
00009 
00010 
00011 #include "Sacado_trad.hpp"
00012 
00013 #include <cstdio>
00014 
00015 using std::printf;
00016 
00017 
00018 
00019 typedef ADT_RAD IndepADvar<double> AI;
00020 
00021 typedef ADT_RAD ADvar<double> A;
00022 
00023 typedef ADT_RAD ConstADvar<double> C;
00024 
00025 typedef ADT_RAD ADvari<double> Ai;
00026 
00027 typedef const ADT_RAD IndepADvar<double> cAI;
00028 
00029 typedef const ADT_RAD ADvar<double> cA;
00030 
00031 typedef const ADT_RAD ConstADvar<double> cC;
00032 
00033 typedef const ADT_RAD ADvari<double> cAi;
00034 
00035 static int rc;
00036 
00037 
00038 
00039 /* This is to be run through an awk program that changes lines */
00040 
00041 /* with "BINTEST" or "UNOPTEST" at the beginning of the line into */
00042 
00043 /* a the desired C++ (which we can then inspect). */
00044 
00045 
00046 
00047  void
00048 
00049 botch(const char *what, double wanted, double got)
00050 
00051 {
00052 
00053   printf("%s: expected %g, got %g, diff = %.2g\n", what, wanted, got, wanted-got);
00054 
00055   rc = 1;
00056 
00057   }
00058 
00059 
00060 
00061  const double tol = 5e-16;
00062 
00063 
00064 
00065  int
00066 
00067 differ(double a, double b)
00068 
00069 {
00070 
00071   double d = a - b;
00072 
00073   if (d < 0.)
00074 
00075     d = -d;
00076 
00077   if (a < 0.)
00078 
00079     a = -a;
00080 
00081   if (b < 0.)
00082 
00083     b = -b;
00084 
00085   if (a < b)
00086 
00087     a = b;
00088 
00089   if (a > 0.)
00090 
00091     d /= a;
00092 
00093   return d > tol;
00094 
00095   }
00096 
00097 
00098 
00099 #ifndef RAD_EQ_ALIAS
00100 
00101 #define Plus_dx 1.
00102 
00103 #else
00104 
00105 #ifdef RAD_AUTO_AD_Const
00106 
00107 #define Plus_dx 1.
00108 
00109 #else
00110 
00111 #define Plus_dx 0.
00112 
00113 #endif
00114 
00115 #endif
00116 
00117 
00118 
00119  int
00120 
00121 main(void)
00122 
00123 {
00124 
00125   AI xAI, yAI;
00126 
00127   A fA, xA, yA;
00128 
00129   C xC, yC;
00130 
00131   double dx, dy, f, xd, yd;
00132 
00133   long xL, yL;
00134 
00135   int xi, yi;
00136 
00137 
00138 
00139   rc = 0;
00140 
00141 
00142   /**** Test of operator>= ****/
00143 
00144   xd = 2.; yd = 3.; f = 0.; dx = 0.; dy = 0.;
00145   xAI = xd;
00146   yAI = yd;
00147   fA = operator>=(xAI,yAI);
00148   A::Gradcomp();
00149   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yAI)", f, fA.val());
00150   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yAI)/dx", dx, xAI.adj());
00151   else if (differ(yAI.adj(), dy)) botch("d operator>=(xAI,yAI)/dy", dy, yAI.adj());
00152   {
00153   A::aval_reset();
00154   cAI xcAI(xd);
00155   yAI = yd;
00156   fA = operator>=(xcAI,yAI);
00157   A::Gradcomp();
00158   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yAI)", f, fA.val());
00159   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yAI)/dx", dx, xcAI.adj());
00160   else if (differ(yAI.adj(), dy)) botch("d operator>=(xcAI,yAI)/dy", dy, yAI.adj());
00161   }
00162   {
00163   A::aval_reset();
00164   xAI = xd;
00165   cAI ycAI(yd);
00166   fA = operator>=(xAI,ycAI);
00167   A::Gradcomp();
00168   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,ycAI)", f, fA.val());
00169   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,ycAI)/dx", dx, xAI.adj());
00170   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xAI,ycAI)/dy", dy, ycAI.adj());
00171   }
00172   {
00173   A::aval_reset();
00174   cAI xcAI(xd);
00175   cAI ycAI(yd);
00176   fA = operator>=(xcAI,ycAI);
00177   A::Gradcomp();
00178   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,ycAI)", f, fA.val());
00179   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,ycAI)/dx", dx, xcAI.adj());
00180   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xcAI,ycAI)/dy", dy, ycAI.adj());
00181   }
00182   xAI = xd;
00183   yA = yd;
00184   fA = operator>=(xAI,yA);
00185   A::Gradcomp();
00186   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yA)", f, fA.val());
00187   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yA)/dx", dx, xAI.adj());
00188   else if (differ(yA.adj(), dy)) botch("d operator>=(xAI,yA)/dy", dy, yA.adj());
00189   {
00190   A::aval_reset();
00191   cAI xcAI(xd);
00192   yA = yd;
00193   fA = operator>=(xcAI,yA);
00194   A::Gradcomp();
00195   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yA)", f, fA.val());
00196   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yA)/dx", dx, xcAI.adj());
00197   else if (differ(yA.adj(), dy)) botch("d operator>=(xcAI,yA)/dy", dy, yA.adj());
00198   }
00199   {
00200   A::aval_reset();
00201   xAI = xd;
00202   cA ycA(yd);
00203   fA = operator>=(xAI,ycA);
00204   A::Gradcomp();
00205   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,ycA)", f, fA.val());
00206   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,ycA)/dx", dx, xAI.adj());
00207   else if (differ(ycA.adj(), dy)) botch("d operator>=(xAI,ycA)/dy", dy, ycA.adj());
00208   }
00209   {
00210   A::aval_reset();
00211   cAI xcAI(xd);
00212   cA ycA(yd);
00213   fA = operator>=(xcAI,ycA);
00214   A::Gradcomp();
00215   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,ycA)", f, fA.val());
00216   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,ycA)/dx", dx, xcAI.adj());
00217   else if (differ(ycA.adj(), dy)) botch("d operator>=(xcAI,ycA)/dy", dy, ycA.adj());
00218   }
00219   xAI = xd;
00220   yC = yd;
00221   fA = operator>=(xAI,yC);
00222   A::Gradcomp();
00223   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yC)", f, fA.val());
00224   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yC)/dx", dx, xAI.adj());
00225   else if (differ(yC.adj(), dy)) botch("d operator>=(xAI,yC)/dy", dy, yC.adj());
00226   {
00227   A::aval_reset();
00228   cAI xcAI(xd);
00229   yC = yd;
00230   fA = operator>=(xcAI,yC);
00231   A::Gradcomp();
00232   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yC)", f, fA.val());
00233   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yC)/dx", dx, xcAI.adj());
00234   else if (differ(yC.adj(), dy)) botch("d operator>=(xcAI,yC)/dy", dy, yC.adj());
00235   }
00236   {
00237   A::aval_reset();
00238   xAI = xd;
00239   cC ycC(yd);
00240   fA = operator>=(xAI,ycC);
00241   A::Gradcomp();
00242   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,ycC)", f, fA.val());
00243   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,ycC)/dx", dx, xAI.adj());
00244   else if (differ(ycC.adj(), dy)) botch("d operator>=(xAI,ycC)/dy", dy, ycC.adj());
00245   }
00246   {
00247   A::aval_reset();
00248   cAI xcAI(xd);
00249   cC ycC(yd);
00250   fA = operator>=(xcAI,ycC);
00251   A::Gradcomp();
00252   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,ycC)", f, fA.val());
00253   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,ycC)/dx", dx, xcAI.adj());
00254   else if (differ(ycC.adj(), dy)) botch("d operator>=(xcAI,ycC)/dy", dy, ycC.adj());
00255   }
00256   {
00257   xAI = xd;
00258   Ai yAi(yd);
00259   fA = operator>=(xAI,yAi);
00260   A::Gradcomp();
00261   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yAi)", f, fA.val());
00262   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yAi)/dx", dx, xAI.adj());
00263   else if (differ(yAi.aval, dy)) botch("d operator>=(xAI,yAi)/dy", dy, yAi.aval);
00264   }
00265   {
00266   A::aval_reset();
00267   cAI xcAI(xd);
00268   Ai yAi(yd);
00269   fA = operator>=(xcAI,yAi);
00270   A::Gradcomp();
00271   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yAi)", f, fA.val());
00272   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yAi)/dx", dx, xcAI.adj());
00273   else if (differ(yAi.aval, dy)) botch("d operator>=(xcAI,yAi)/dy", dy, yAi.aval);
00274   }
00275   {
00276   A::aval_reset();
00277   xAI = xd;
00278   cAi ycAi(yd);
00279   fA = operator>=(xAI,ycAi);
00280   A::Gradcomp();
00281   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,ycAi)", f, fA.val());
00282   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,ycAi)/dx", dx, xAI.adj());
00283   else if (differ(ycAi.aval, dy)) botch("d operator>=(xAI,ycAi)/dy", dy, ycAi.aval);
00284   }
00285   {
00286   A::aval_reset();
00287   cAI xcAI(xd);
00288   cAi ycAi(yd);
00289   fA = operator>=(xcAI,ycAi);
00290   A::Gradcomp();
00291   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,ycAi)", f, fA.val());
00292   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,ycAi)/dx", dx, xcAI.adj());
00293   else if (differ(ycAi.aval, dy)) botch("d operator>=(xcAI,ycAi)/dy", dy, ycAi.aval);
00294   }
00295   xAI = xd;
00296   fA = operator>=(xAI,yd);
00297   A::Gradcomp();
00298   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yd)", f, fA.val());
00299   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yd)/dx", dx, xAI.adj());
00300   {
00301   A::aval_reset();
00302   cAI xcAI(xd);
00303   fA = operator>=(xcAI,yd);
00304   A::Gradcomp();
00305   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yd)", f, fA.val());
00306   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yd)/dx", dx, xcAI.adj());
00307   }
00308   xAI = xd;
00309   yL = (long)yd;
00310   fA = operator>=(xAI,yL);
00311   A::Gradcomp();
00312   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yL)", f, fA.val());
00313   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yL)/dx", dx, xAI.adj());
00314   {
00315   A::aval_reset();
00316   cAI xcAI(xd);
00317   yL = (long)yd;
00318   fA = operator>=(xcAI,yL);
00319   A::Gradcomp();
00320   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yL)", f, fA.val());
00321   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yL)/dx", dx, xcAI.adj());
00322   }
00323   xAI = xd;
00324   yi = (int)yd;
00325   fA = operator>=(xAI,yi);
00326   A::Gradcomp();
00327   if (differ(fA.val(), f)) botch("fA = operator>=(xAI,yi)", f, fA.val());
00328   else if (differ(xAI.adj(), dx)) botch("d operator>=(xAI,yi)/dx", dx, xAI.adj());
00329   {
00330   A::aval_reset();
00331   cAI xcAI(xd);
00332   yi = (int)yd;
00333   fA = operator>=(xcAI,yi);
00334   A::Gradcomp();
00335   if (differ(fA.val(), f)) botch("fA = operator>=(xcAI,yi)", f, fA.val());
00336   else if (differ(xcAI.adj(), dx)) botch("d operator>=(xcAI,yi)/dx", dx, xcAI.adj());
00337   }
00338   xA = xd;
00339   yAI = yd;
00340   fA = operator>=(xA,yAI);
00341   A::Gradcomp();
00342   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yAI)", f, fA.val());
00343   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yAI)/dx", dx, xA.adj());
00344   else if (differ(yAI.adj(), dy)) botch("d operator>=(xA,yAI)/dy", dy, yAI.adj());
00345   {
00346   A::aval_reset();
00347   cA xcA(xd);
00348   yAI = yd;
00349   fA = operator>=(xcA,yAI);
00350   A::Gradcomp();
00351   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yAI)", f, fA.val());
00352   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yAI)/dx", dx, xcA.adj());
00353   else if (differ(yAI.adj(), dy)) botch("d operator>=(xcA,yAI)/dy", dy, yAI.adj());
00354   }
00355   {
00356   A::aval_reset();
00357   xA = xd;
00358   cAI ycAI(yd);
00359   fA = operator>=(xA,ycAI);
00360   A::Gradcomp();
00361   if (differ(fA.val(), f)) botch("fA = operator>=(xA,ycAI)", f, fA.val());
00362   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,ycAI)/dx", dx, xA.adj());
00363   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xA,ycAI)/dy", dy, ycAI.adj());
00364   }
00365   {
00366   A::aval_reset();
00367   cA xcA(xd);
00368   cAI ycAI(yd);
00369   fA = operator>=(xcA,ycAI);
00370   A::Gradcomp();
00371   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,ycAI)", f, fA.val());
00372   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,ycAI)/dx", dx, xcA.adj());
00373   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xcA,ycAI)/dy", dy, ycAI.adj());
00374   }
00375   xA = xd;
00376   yA = yd;
00377   fA = operator>=(xA,yA);
00378   A::Gradcomp();
00379   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yA)", f, fA.val());
00380   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yA)/dx", dx, xA.adj());
00381   else if (differ(yA.adj(), dy)) botch("d operator>=(xA,yA)/dy", dy, yA.adj());
00382   {
00383   A::aval_reset();
00384   cA xcA(xd);
00385   yA = yd;
00386   fA = operator>=(xcA,yA);
00387   A::Gradcomp();
00388   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yA)", f, fA.val());
00389   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yA)/dx", dx, xcA.adj());
00390   else if (differ(yA.adj(), dy)) botch("d operator>=(xcA,yA)/dy", dy, yA.adj());
00391   }
00392   {
00393   A::aval_reset();
00394   xA = xd;
00395   cA ycA(yd);
00396   fA = operator>=(xA,ycA);
00397   A::Gradcomp();
00398   if (differ(fA.val(), f)) botch("fA = operator>=(xA,ycA)", f, fA.val());
00399   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,ycA)/dx", dx, xA.adj());
00400   else if (differ(ycA.adj(), dy)) botch("d operator>=(xA,ycA)/dy", dy, ycA.adj());
00401   }
00402   {
00403   A::aval_reset();
00404   cA xcA(xd);
00405   cA ycA(yd);
00406   fA = operator>=(xcA,ycA);
00407   A::Gradcomp();
00408   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,ycA)", f, fA.val());
00409   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,ycA)/dx", dx, xcA.adj());
00410   else if (differ(ycA.adj(), dy)) botch("d operator>=(xcA,ycA)/dy", dy, ycA.adj());
00411   }
00412   xA = xd;
00413   yC = yd;
00414   fA = operator>=(xA,yC);
00415   A::Gradcomp();
00416   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yC)", f, fA.val());
00417   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yC)/dx", dx, xA.adj());
00418   else if (differ(yC.adj(), dy)) botch("d operator>=(xA,yC)/dy", dy, yC.adj());
00419   {
00420   A::aval_reset();
00421   cA xcA(xd);
00422   yC = yd;
00423   fA = operator>=(xcA,yC);
00424   A::Gradcomp();
00425   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yC)", f, fA.val());
00426   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yC)/dx", dx, xcA.adj());
00427   else if (differ(yC.adj(), dy)) botch("d operator>=(xcA,yC)/dy", dy, yC.adj());
00428   }
00429   {
00430   A::aval_reset();
00431   xA = xd;
00432   cC ycC(yd);
00433   fA = operator>=(xA,ycC);
00434   A::Gradcomp();
00435   if (differ(fA.val(), f)) botch("fA = operator>=(xA,ycC)", f, fA.val());
00436   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,ycC)/dx", dx, xA.adj());
00437   else if (differ(ycC.adj(), dy)) botch("d operator>=(xA,ycC)/dy", dy, ycC.adj());
00438   }
00439   {
00440   A::aval_reset();
00441   cA xcA(xd);
00442   cC ycC(yd);
00443   fA = operator>=(xcA,ycC);
00444   A::Gradcomp();
00445   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,ycC)", f, fA.val());
00446   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,ycC)/dx", dx, xcA.adj());
00447   else if (differ(ycC.adj(), dy)) botch("d operator>=(xcA,ycC)/dy", dy, ycC.adj());
00448   }
00449   {
00450   xA = xd;
00451   Ai yAi(yd);
00452   fA = operator>=(xA,yAi);
00453   A::Gradcomp();
00454   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yAi)", f, fA.val());
00455   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yAi)/dx", dx, xA.adj());
00456   else if (differ(yAi.aval, dy)) botch("d operator>=(xA,yAi)/dy", dy, yAi.aval);
00457   }
00458   {
00459   A::aval_reset();
00460   cA xcA(xd);
00461   Ai yAi(yd);
00462   fA = operator>=(xcA,yAi);
00463   A::Gradcomp();
00464   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yAi)", f, fA.val());
00465   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yAi)/dx", dx, xcA.adj());
00466   else if (differ(yAi.aval, dy)) botch("d operator>=(xcA,yAi)/dy", dy, yAi.aval);
00467   }
00468   {
00469   A::aval_reset();
00470   xA = xd;
00471   cAi ycAi(yd);
00472   fA = operator>=(xA,ycAi);
00473   A::Gradcomp();
00474   if (differ(fA.val(), f)) botch("fA = operator>=(xA,ycAi)", f, fA.val());
00475   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,ycAi)/dx", dx, xA.adj());
00476   else if (differ(ycAi.aval, dy)) botch("d operator>=(xA,ycAi)/dy", dy, ycAi.aval);
00477   }
00478   {
00479   A::aval_reset();
00480   cA xcA(xd);
00481   cAi ycAi(yd);
00482   fA = operator>=(xcA,ycAi);
00483   A::Gradcomp();
00484   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,ycAi)", f, fA.val());
00485   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,ycAi)/dx", dx, xcA.adj());
00486   else if (differ(ycAi.aval, dy)) botch("d operator>=(xcA,ycAi)/dy", dy, ycAi.aval);
00487   }
00488   xA = xd;
00489   fA = operator>=(xA,yd);
00490   A::Gradcomp();
00491   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yd)", f, fA.val());
00492   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yd)/dx", dx, xA.adj());
00493   {
00494   A::aval_reset();
00495   cA xcA(xd);
00496   fA = operator>=(xcA,yd);
00497   A::Gradcomp();
00498   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yd)", f, fA.val());
00499   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yd)/dx", dx, xcA.adj());
00500   }
00501   xA = xd;
00502   yL = (long)yd;
00503   fA = operator>=(xA,yL);
00504   A::Gradcomp();
00505   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yL)", f, fA.val());
00506   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yL)/dx", dx, xA.adj());
00507   {
00508   A::aval_reset();
00509   cA xcA(xd);
00510   yL = (long)yd;
00511   fA = operator>=(xcA,yL);
00512   A::Gradcomp();
00513   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yL)", f, fA.val());
00514   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yL)/dx", dx, xcA.adj());
00515   }
00516   xA = xd;
00517   yi = (int)yd;
00518   fA = operator>=(xA,yi);
00519   A::Gradcomp();
00520   if (differ(fA.val(), f)) botch("fA = operator>=(xA,yi)", f, fA.val());
00521   else if (differ(xA.adj(), dx)) botch("d operator>=(xA,yi)/dx", dx, xA.adj());
00522   {
00523   A::aval_reset();
00524   cA xcA(xd);
00525   yi = (int)yd;
00526   fA = operator>=(xcA,yi);
00527   A::Gradcomp();
00528   if (differ(fA.val(), f)) botch("fA = operator>=(xcA,yi)", f, fA.val());
00529   else if (differ(xcA.adj(), dx)) botch("d operator>=(xcA,yi)/dx", dx, xcA.adj());
00530   }
00531   xC = xd;
00532   yAI = yd;
00533   fA = operator>=(xC,yAI);
00534   A::Gradcomp();
00535   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yAI)", f, fA.val());
00536   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yAI)/dx", dx, xC.adj());
00537   else if (differ(yAI.adj(), dy)) botch("d operator>=(xC,yAI)/dy", dy, yAI.adj());
00538   {
00539   A::aval_reset();
00540   cC xcC(xd);
00541   yAI = yd;
00542   fA = operator>=(xcC,yAI);
00543   A::Gradcomp();
00544   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yAI)", f, fA.val());
00545   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yAI)/dx", dx, xcC.adj());
00546   else if (differ(yAI.adj(), dy)) botch("d operator>=(xcC,yAI)/dy", dy, yAI.adj());
00547   }
00548   {
00549   A::aval_reset();
00550   xC = xd;
00551   cAI ycAI(yd);
00552   fA = operator>=(xC,ycAI);
00553   A::Gradcomp();
00554   if (differ(fA.val(), f)) botch("fA = operator>=(xC,ycAI)", f, fA.val());
00555   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,ycAI)/dx", dx, xC.adj());
00556   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xC,ycAI)/dy", dy, ycAI.adj());
00557   }
00558   {
00559   A::aval_reset();
00560   cC xcC(xd);
00561   cAI ycAI(yd);
00562   fA = operator>=(xcC,ycAI);
00563   A::Gradcomp();
00564   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,ycAI)", f, fA.val());
00565   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,ycAI)/dx", dx, xcC.adj());
00566   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xcC,ycAI)/dy", dy, ycAI.adj());
00567   }
00568   xC = xd;
00569   yA = yd;
00570   fA = operator>=(xC,yA);
00571   A::Gradcomp();
00572   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yA)", f, fA.val());
00573   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yA)/dx", dx, xC.adj());
00574   else if (differ(yA.adj(), dy)) botch("d operator>=(xC,yA)/dy", dy, yA.adj());
00575   {
00576   A::aval_reset();
00577   cC xcC(xd);
00578   yA = yd;
00579   fA = operator>=(xcC,yA);
00580   A::Gradcomp();
00581   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yA)", f, fA.val());
00582   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yA)/dx", dx, xcC.adj());
00583   else if (differ(yA.adj(), dy)) botch("d operator>=(xcC,yA)/dy", dy, yA.adj());
00584   }
00585   {
00586   A::aval_reset();
00587   xC = xd;
00588   cA ycA(yd);
00589   fA = operator>=(xC,ycA);
00590   A::Gradcomp();
00591   if (differ(fA.val(), f)) botch("fA = operator>=(xC,ycA)", f, fA.val());
00592   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,ycA)/dx", dx, xC.adj());
00593   else if (differ(ycA.adj(), dy)) botch("d operator>=(xC,ycA)/dy", dy, ycA.adj());
00594   }
00595   {
00596   A::aval_reset();
00597   cC xcC(xd);
00598   cA ycA(yd);
00599   fA = operator>=(xcC,ycA);
00600   A::Gradcomp();
00601   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,ycA)", f, fA.val());
00602   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,ycA)/dx", dx, xcC.adj());
00603   else if (differ(ycA.adj(), dy)) botch("d operator>=(xcC,ycA)/dy", dy, ycA.adj());
00604   }
00605   xC = xd;
00606   yC = yd;
00607   fA = operator>=(xC,yC);
00608   A::Gradcomp();
00609   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yC)", f, fA.val());
00610   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yC)/dx", dx, xC.adj());
00611   else if (differ(yC.adj(), dy)) botch("d operator>=(xC,yC)/dy", dy, yC.adj());
00612   {
00613   A::aval_reset();
00614   cC xcC(xd);
00615   yC = yd;
00616   fA = operator>=(xcC,yC);
00617   A::Gradcomp();
00618   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yC)", f, fA.val());
00619   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yC)/dx", dx, xcC.adj());
00620   else if (differ(yC.adj(), dy)) botch("d operator>=(xcC,yC)/dy", dy, yC.adj());
00621   }
00622   {
00623   A::aval_reset();
00624   xC = xd;
00625   cC ycC(yd);
00626   fA = operator>=(xC,ycC);
00627   A::Gradcomp();
00628   if (differ(fA.val(), f)) botch("fA = operator>=(xC,ycC)", f, fA.val());
00629   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,ycC)/dx", dx, xC.adj());
00630   else if (differ(ycC.adj(), dy)) botch("d operator>=(xC,ycC)/dy", dy, ycC.adj());
00631   }
00632   {
00633   A::aval_reset();
00634   cC xcC(xd);
00635   cC ycC(yd);
00636   fA = operator>=(xcC,ycC);
00637   A::Gradcomp();
00638   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,ycC)", f, fA.val());
00639   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,ycC)/dx", dx, xcC.adj());
00640   else if (differ(ycC.adj(), dy)) botch("d operator>=(xcC,ycC)/dy", dy, ycC.adj());
00641   }
00642   {
00643   xC = xd;
00644   Ai yAi(yd);
00645   fA = operator>=(xC,yAi);
00646   A::Gradcomp();
00647   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yAi)", f, fA.val());
00648   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yAi)/dx", dx, xC.adj());
00649   else if (differ(yAi.aval, dy)) botch("d operator>=(xC,yAi)/dy", dy, yAi.aval);
00650   }
00651   {
00652   A::aval_reset();
00653   cC xcC(xd);
00654   Ai yAi(yd);
00655   fA = operator>=(xcC,yAi);
00656   A::Gradcomp();
00657   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yAi)", f, fA.val());
00658   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yAi)/dx", dx, xcC.adj());
00659   else if (differ(yAi.aval, dy)) botch("d operator>=(xcC,yAi)/dy", dy, yAi.aval);
00660   }
00661   {
00662   A::aval_reset();
00663   xC = xd;
00664   cAi ycAi(yd);
00665   fA = operator>=(xC,ycAi);
00666   A::Gradcomp();
00667   if (differ(fA.val(), f)) botch("fA = operator>=(xC,ycAi)", f, fA.val());
00668   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,ycAi)/dx", dx, xC.adj());
00669   else if (differ(ycAi.aval, dy)) botch("d operator>=(xC,ycAi)/dy", dy, ycAi.aval);
00670   }
00671   {
00672   A::aval_reset();
00673   cC xcC(xd);
00674   cAi ycAi(yd);
00675   fA = operator>=(xcC,ycAi);
00676   A::Gradcomp();
00677   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,ycAi)", f, fA.val());
00678   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,ycAi)/dx", dx, xcC.adj());
00679   else if (differ(ycAi.aval, dy)) botch("d operator>=(xcC,ycAi)/dy", dy, ycAi.aval);
00680   }
00681   xC = xd;
00682   fA = operator>=(xC,yd);
00683   A::Gradcomp();
00684   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yd)", f, fA.val());
00685   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yd)/dx", dx, xC.adj());
00686   {
00687   A::aval_reset();
00688   cC xcC(xd);
00689   fA = operator>=(xcC,yd);
00690   A::Gradcomp();
00691   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yd)", f, fA.val());
00692   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yd)/dx", dx, xcC.adj());
00693   }
00694   xC = xd;
00695   yL = (long)yd;
00696   fA = operator>=(xC,yL);
00697   A::Gradcomp();
00698   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yL)", f, fA.val());
00699   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yL)/dx", dx, xC.adj());
00700   {
00701   A::aval_reset();
00702   cC xcC(xd);
00703   yL = (long)yd;
00704   fA = operator>=(xcC,yL);
00705   A::Gradcomp();
00706   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yL)", f, fA.val());
00707   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yL)/dx", dx, xcC.adj());
00708   }
00709   xC = xd;
00710   yi = (int)yd;
00711   fA = operator>=(xC,yi);
00712   A::Gradcomp();
00713   if (differ(fA.val(), f)) botch("fA = operator>=(xC,yi)", f, fA.val());
00714   else if (differ(xC.adj(), dx)) botch("d operator>=(xC,yi)/dx", dx, xC.adj());
00715   {
00716   A::aval_reset();
00717   cC xcC(xd);
00718   yi = (int)yd;
00719   fA = operator>=(xcC,yi);
00720   A::Gradcomp();
00721   if (differ(fA.val(), f)) botch("fA = operator>=(xcC,yi)", f, fA.val());
00722   else if (differ(xcC.adj(), dx)) botch("d operator>=(xcC,yi)/dx", dx, xcC.adj());
00723   }
00724   {
00725   Ai xAi(xd);
00726   yAI = yd;
00727   fA = operator>=(xAi,yAI);
00728   A::Gradcomp();
00729   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yAI)", f, fA.val());
00730   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yAI)/dx", dx, xAi.aval);
00731   else if (differ(yAI.adj(), dy)) botch("d operator>=(xAi,yAI)/dy", dy, yAI.adj());
00732   }
00733   {
00734   A::aval_reset();
00735   cAi xcAi(xd);
00736   yAI = yd;
00737   fA = operator>=(xcAi,yAI);
00738   A::Gradcomp();
00739   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yAI)", f, fA.val());
00740   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yAI)/dx", dx, xcAi.aval);
00741   else if (differ(yAI.adj(), dy)) botch("d operator>=(xcAi,yAI)/dy", dy, yAI.adj());
00742   }
00743   {
00744   A::aval_reset();
00745   Ai xAi(xd);
00746   cAI ycAI(yd);
00747   fA = operator>=(xAi,ycAI);
00748   A::Gradcomp();
00749   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,ycAI)", f, fA.val());
00750   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,ycAI)/dx", dx, xAi.aval);
00751   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xAi,ycAI)/dy", dy, ycAI.adj());
00752   }
00753   {
00754   Ai xAi(xd);
00755   yA = yd;
00756   fA = operator>=(xAi,yA);
00757   A::Gradcomp();
00758   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yA)", f, fA.val());
00759   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yA)/dx", dx, xAi.aval);
00760   else if (differ(yA.adj(), dy)) botch("d operator>=(xAi,yA)/dy", dy, yA.adj());
00761   }
00762   {
00763   A::aval_reset();
00764   cAi xcAi(xd);
00765   yA = yd;
00766   fA = operator>=(xcAi,yA);
00767   A::Gradcomp();
00768   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yA)", f, fA.val());
00769   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yA)/dx", dx, xcAi.aval);
00770   else if (differ(yA.adj(), dy)) botch("d operator>=(xcAi,yA)/dy", dy, yA.adj());
00771   }
00772   {
00773   A::aval_reset();
00774   Ai xAi(xd);
00775   cA ycA(yd);
00776   fA = operator>=(xAi,ycA);
00777   A::Gradcomp();
00778   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,ycA)", f, fA.val());
00779   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,ycA)/dx", dx, xAi.aval);
00780   else if (differ(ycA.adj(), dy)) botch("d operator>=(xAi,ycA)/dy", dy, ycA.adj());
00781   }
00782   {
00783   Ai xAi(xd);
00784   yC = yd;
00785   fA = operator>=(xAi,yC);
00786   A::Gradcomp();
00787   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yC)", f, fA.val());
00788   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yC)/dx", dx, xAi.aval);
00789   else if (differ(yC.adj(), dy)) botch("d operator>=(xAi,yC)/dy", dy, yC.adj());
00790   }
00791   {
00792   A::aval_reset();
00793   cAi xcAi(xd);
00794   yC = yd;
00795   fA = operator>=(xcAi,yC);
00796   A::Gradcomp();
00797   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yC)", f, fA.val());
00798   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yC)/dx", dx, xcAi.aval);
00799   else if (differ(yC.adj(), dy)) botch("d operator>=(xcAi,yC)/dy", dy, yC.adj());
00800   }
00801   {
00802   A::aval_reset();
00803   Ai xAi(xd);
00804   cC ycC(yd);
00805   fA = operator>=(xAi,ycC);
00806   A::Gradcomp();
00807   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,ycC)", f, fA.val());
00808   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,ycC)/dx", dx, xAi.aval);
00809   else if (differ(ycC.adj(), dy)) botch("d operator>=(xAi,ycC)/dy", dy, ycC.adj());
00810   }
00811   {
00812   Ai xAi(xd);
00813   Ai yAi(yd);
00814   fA = operator>=(xAi,yAi);
00815   A::Gradcomp();
00816   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yAi)", f, fA.val());
00817   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yAi)/dx", dx, xAi.aval);
00818   else if (differ(yAi.aval, dy)) botch("d operator>=(xAi,yAi)/dy", dy, yAi.aval);
00819   }
00820   {
00821   A::aval_reset();
00822   cAi xcAi(xd);
00823   Ai yAi(yd);
00824   fA = operator>=(xcAi,yAi);
00825   A::Gradcomp();
00826   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yAi)", f, fA.val());
00827   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yAi)/dx", dx, xcAi.aval);
00828   else if (differ(yAi.aval, dy)) botch("d operator>=(xcAi,yAi)/dy", dy, yAi.aval);
00829   }
00830   {
00831   A::aval_reset();
00832   Ai xAi(xd);
00833   cAi ycAi(yd);
00834   fA = operator>=(xAi,ycAi);
00835   A::Gradcomp();
00836   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,ycAi)", f, fA.val());
00837   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,ycAi)/dx", dx, xAi.aval);
00838   else if (differ(ycAi.aval, dy)) botch("d operator>=(xAi,ycAi)/dy", dy, ycAi.aval);
00839   }
00840   {
00841   Ai xAi(xd);
00842   fA = operator>=(xAi,yd);
00843   A::Gradcomp();
00844   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yd)", f, fA.val());
00845   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yd)/dx", dx, xAi.aval);
00846   }
00847   {
00848   A::aval_reset();
00849   cAi xcAi(xd);
00850   fA = operator>=(xcAi,yd);
00851   A::Gradcomp();
00852   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yd)", f, fA.val());
00853   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yd)/dx", dx, xcAi.aval);
00854   }
00855   {
00856   Ai xAi(xd);
00857   yL = (long)yd;
00858   fA = operator>=(xAi,yL);
00859   A::Gradcomp();
00860   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yL)", f, fA.val());
00861   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yL)/dx", dx, xAi.aval);
00862   }
00863   {
00864   A::aval_reset();
00865   cAi xcAi(xd);
00866   yL = (long)yd;
00867   fA = operator>=(xcAi,yL);
00868   A::Gradcomp();
00869   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yL)", f, fA.val());
00870   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yL)/dx", dx, xcAi.aval);
00871   }
00872   {
00873   Ai xAi(xd);
00874   yi = (int)yd;
00875   fA = operator>=(xAi,yi);
00876   A::Gradcomp();
00877   if (differ(fA.val(), f)) botch("fA = operator>=(xAi,yi)", f, fA.val());
00878   else if (differ(xAi.aval, dx)) botch("d operator>=(xAi,yi)/dx", dx, xAi.aval);
00879   }
00880   {
00881   A::aval_reset();
00882   cAi xcAi(xd);
00883   yi = (int)yd;
00884   fA = operator>=(xcAi,yi);
00885   A::Gradcomp();
00886   if (differ(fA.val(), f)) botch("fA = operator>=(xcAi,yi)", f, fA.val());
00887   else if (differ(xcAi.aval, dx)) botch("d operator>=(xcAi,yi)/dx", dx, xcAi.aval);
00888   }
00889   yAI = yd;
00890   fA = operator>=(xd,yAI);
00891   A::Gradcomp();
00892   if (differ(fA.val(), f)) botch("fA = operator>=(xd,yAI)", f, fA.val());
00893   else if (differ(yAI.adj(), dy)) botch("d operator>=(xd,yAI)/dy", dy, yAI.adj());
00894   {
00895   A::aval_reset();
00896   cAI ycAI(yd);
00897   fA = operator>=(xd,ycAI);
00898   A::Gradcomp();
00899   if (differ(fA.val(), f)) botch("fA = operator>=(xd,ycAI)", f, fA.val());
00900   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xd,ycAI)/dy", dy, ycAI.adj());
00901   }
00902   yA = yd;
00903   fA = operator>=(xd,yA);
00904   A::Gradcomp();
00905   if (differ(fA.val(), f)) botch("fA = operator>=(xd,yA)", f, fA.val());
00906   else if (differ(yA.adj(), dy)) botch("d operator>=(xd,yA)/dy", dy, yA.adj());
00907   {
00908   A::aval_reset();
00909   cA ycA(yd);
00910   fA = operator>=(xd,ycA);
00911   A::Gradcomp();
00912   if (differ(fA.val(), f)) botch("fA = operator>=(xd,ycA)", f, fA.val());
00913   else if (differ(ycA.adj(), dy)) botch("d operator>=(xd,ycA)/dy", dy, ycA.adj());
00914   }
00915   yC = yd;
00916   fA = operator>=(xd,yC);
00917   A::Gradcomp();
00918   if (differ(fA.val(), f)) botch("fA = operator>=(xd,yC)", f, fA.val());
00919   else if (differ(yC.adj(), dy)) botch("d operator>=(xd,yC)/dy", dy, yC.adj());
00920   {
00921   A::aval_reset();
00922   cC ycC(yd);
00923   fA = operator>=(xd,ycC);
00924   A::Gradcomp();
00925   if (differ(fA.val(), f)) botch("fA = operator>=(xd,ycC)", f, fA.val());
00926   else if (differ(ycC.adj(), dy)) botch("d operator>=(xd,ycC)/dy", dy, ycC.adj());
00927   }
00928   {
00929   Ai yAi(yd);
00930   fA = operator>=(xd,yAi);
00931   A::Gradcomp();
00932   if (differ(fA.val(), f)) botch("fA = operator>=(xd,yAi)", f, fA.val());
00933   else if (differ(yAi.aval, dy)) botch("d operator>=(xd,yAi)/dy", dy, yAi.aval);
00934   }
00935   {
00936   A::aval_reset();
00937   cAi ycAi(yd);
00938   fA = operator>=(xd,ycAi);
00939   A::Gradcomp();
00940   if (differ(fA.val(), f)) botch("fA = operator>=(xd,ycAi)", f, fA.val());
00941   else if (differ(ycAi.aval, dy)) botch("d operator>=(xd,ycAi)/dy", dy, ycAi.aval);
00942   }
00943   xL = (long)xd;
00944   yAI = yd;
00945   fA = operator>=(xL,yAI);
00946   A::Gradcomp();
00947   if (differ(fA.val(), f)) botch("fA = operator>=(xL,yAI)", f, fA.val());
00948   else if (differ(yAI.adj(), dy)) botch("d operator>=(xL,yAI)/dy", dy, yAI.adj());
00949   {
00950   A::aval_reset();
00951   xL = (long)xd;
00952   cAI ycAI(yd);
00953   fA = operator>=(xL,ycAI);
00954   A::Gradcomp();
00955   if (differ(fA.val(), f)) botch("fA = operator>=(xL,ycAI)", f, fA.val());
00956   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xL,ycAI)/dy", dy, ycAI.adj());
00957   }
00958   xL = (long)xd;
00959   yA = yd;
00960   fA = operator>=(xL,yA);
00961   A::Gradcomp();
00962   if (differ(fA.val(), f)) botch("fA = operator>=(xL,yA)", f, fA.val());
00963   else if (differ(yA.adj(), dy)) botch("d operator>=(xL,yA)/dy", dy, yA.adj());
00964   {
00965   A::aval_reset();
00966   xL = (long)xd;
00967   cA ycA(yd);
00968   fA = operator>=(xL,ycA);
00969   A::Gradcomp();
00970   if (differ(fA.val(), f)) botch("fA = operator>=(xL,ycA)", f, fA.val());
00971   else if (differ(ycA.adj(), dy)) botch("d operator>=(xL,ycA)/dy", dy, ycA.adj());
00972   }
00973   xL = (long)xd;
00974   yC = yd;
00975   fA = operator>=(xL,yC);
00976   A::Gradcomp();
00977   if (differ(fA.val(), f)) botch("fA = operator>=(xL,yC)", f, fA.val());
00978   else if (differ(yC.adj(), dy)) botch("d operator>=(xL,yC)/dy", dy, yC.adj());
00979   {
00980   A::aval_reset();
00981   xL = (long)xd;
00982   cC ycC(yd);
00983   fA = operator>=(xL,ycC);
00984   A::Gradcomp();
00985   if (differ(fA.val(), f)) botch("fA = operator>=(xL,ycC)", f, fA.val());
00986   else if (differ(ycC.adj(), dy)) botch("d operator>=(xL,ycC)/dy", dy, ycC.adj());
00987   }
00988   {
00989   xL = (long)xd;
00990   Ai yAi(yd);
00991   fA = operator>=(xL,yAi);
00992   A::Gradcomp();
00993   if (differ(fA.val(), f)) botch("fA = operator>=(xL,yAi)", f, fA.val());
00994   else if (differ(yAi.aval, dy)) botch("d operator>=(xL,yAi)/dy", dy, yAi.aval);
00995   }
00996   {
00997   A::aval_reset();
00998   xL = (long)xd;
00999   cAi ycAi(yd);
01000   fA = operator>=(xL,ycAi);
01001   A::Gradcomp();
01002   if (differ(fA.val(), f)) botch("fA = operator>=(xL,ycAi)", f, fA.val());
01003   else if (differ(ycAi.aval, dy)) botch("d operator>=(xL,ycAi)/dy", dy, ycAi.aval);
01004   }
01005   xi = (int)xd;
01006   yAI = yd;
01007   fA = operator>=(xi,yAI);
01008   A::Gradcomp();
01009   if (differ(fA.val(), f)) botch("fA = operator>=(xi,yAI)", f, fA.val());
01010   else if (differ(yAI.adj(), dy)) botch("d operator>=(xi,yAI)/dy", dy, yAI.adj());
01011   {
01012   A::aval_reset();
01013   xi = (int)xd;
01014   cAI ycAI(yd);
01015   fA = operator>=(xi,ycAI);
01016   A::Gradcomp();
01017   if (differ(fA.val(), f)) botch("fA = operator>=(xi,ycAI)", f, fA.val());
01018   else if (differ(ycAI.adj(), dy)) botch("d operator>=(xi,ycAI)/dy", dy, ycAI.adj());
01019   }
01020   xi = (int)xd;
01021   yA = yd;
01022   fA = operator>=(xi,yA);
01023   A::Gradcomp();
01024   if (differ(fA.val(), f)) botch("fA = operator>=(xi,yA)", f, fA.val());
01025   else if (differ(yA.adj(), dy)) botch("d operator>=(xi,yA)/dy", dy, yA.adj());
01026   {
01027   A::aval_reset();
01028   xi = (int)xd;
01029   cA ycA(yd);
01030   fA = operator>=(xi,ycA);
01031   A::Gradcomp();
01032   if (differ(fA.val(), f)) botch("fA = operator>=(xi,ycA)", f, fA.val());
01033   else if (differ(ycA.adj(), dy)) botch("d operator>=(xi,ycA)/dy", dy, ycA.adj());
01034   }
01035   xi = (int)xd;
01036   yC = yd;
01037   fA = operator>=(xi,yC);
01038   A::Gradcomp();
01039   if (differ(fA.val(), f)) botch("fA = operator>=(xi,yC)", f, fA.val());
01040   else if (differ(yC.adj(), dy)) botch("d operator>=(xi,yC)/dy", dy, yC.adj());
01041   {
01042   A::aval_reset();
01043   xi = (int)xd;
01044   cC ycC(yd);
01045   fA = operator>=(xi,ycC);
01046   A::Gradcomp();
01047   if (differ(fA.val(), f)) botch("fA = operator>=(xi,ycC)", f, fA.val());
01048   else if (differ(ycC.adj(), dy)) botch("d operator>=(xi,ycC)/dy", dy, ycC.adj());
01049   }
01050   {
01051   xi = (int)xd;
01052   Ai yAi(yd);
01053   fA = operator>=(xi,yAi);
01054   A::Gradcomp();
01055   if (differ(fA.val(), f)) botch("fA = operator>=(xi,yAi)", f, fA.val());
01056   else if (differ(yAi.aval, dy)) botch("d operator>=(xi,yAi)/dy", dy, yAi.aval);
01057   }
01058   {
01059   A::aval_reset();
01060   xi = (int)xd;
01061   cAi ycAi(yd);
01062   fA = operator>=(xi,ycAi);
01063   A::Gradcomp();
01064   if (differ(fA.val(), f)) botch("fA = operator>=(xi,ycAi)", f, fA.val());
01065   else if (differ(ycAi.aval, dy)) botch("d operator>=(xi,ycAi)/dy", dy, ycAi.aval);
01066   }
01067 
01068 
01069   if (!rc) // chatter for cppunit test, which cannot tolerate silence
01070 
01071     printf("OK\n");
01072 
01073   return rc;
01074 
01075   }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Wed Apr 13 10:19:38 2011 for Sacado Package Browser (Single Doxygen Collection) by  doxygen 1.6.3