00001 
00002 #include <basix/double.hpp>
00003 #include <basix/int.hpp>
00004 #include <basix/vector.hpp>
00005 #include <basix/port.hpp>
00006 #include <basix/literal.hpp>
00007 #include <numerix/integer.hpp>
00008 #include <numerix/modular.hpp>
00009 #include <numerix/modular_integer.hpp>
00010 #include <numerix/rational.hpp>
00011 #include <numerix/complex.hpp>
00012 #include <numerix/complex_double.hpp>
00013 #include <numerix/ball.hpp>
00014 #include <numerix/ball_complex.hpp>
00015 #include <basix/glue.hpp>
00016 
00017 #define double_literal(x) as_double (as_string (x))
00018 #define int_literal(x) as_int (as_string (x))
00019 #define is_generic_literal is<literal>
00020 #define gen_literal_apply(f,v) gen (as<generic> (f), v)
00021 #define gen_literal_access(f,v) access (as<generic> (f), v)
00022 
00023 namespace mmx {
00024   static mmx_ball(double, double)
00025   GLUE_1 (const double &arg_1) {
00026     return make_mmx_ball (arg_1);
00027   }
00028   
00029   static mmx_ball(double, double)
00030   GLUE_2 (const double &arg_1, const double &arg_2) {
00031     return make_mmx_ball (arg_1, arg_2);
00032   }
00033   
00034   static mmx_ball(double, double)
00035   GLUE_3 (const double &arg_1) {
00036     return make_mmx_ball (arg_1);
00037   }
00038   
00039   static double
00040   GLUE_4 (const mmx_ball(double, double) &arg_1) {
00041     return center (arg_1);
00042   }
00043   
00044   static double
00045   GLUE_5 (const mmx_ball(double, double) &arg_1) {
00046     return mmx_radius (arg_1);
00047   }
00048   
00049   static mmx_ball(double, double)
00050   GLUE_6 (const mmx_ball(double, double) &arg_1) {
00051     return sharpen (arg_1);
00052   }
00053   
00054   static mmx_ball(double, double)
00055   GLUE_7 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00056     return blur (arg_1, arg_2);
00057   }
00058   
00059   static bool
00060   GLUE_8 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00061     return included (arg_1, arg_2);
00062   }
00063   
00064   static mmx_ball(double, double)
00065   GLUE_9 (const mmx_ball(double, double) &arg_1) {
00066     return -arg_1;
00067   }
00068   
00069   static mmx_ball(double, double)
00070   GLUE_10 (const mmx_ball(double, double) &arg_1) {
00071     return square (arg_1);
00072   }
00073   
00074   static mmx_ball(double, double)
00075   GLUE_11 (const mmx_ball(double, double) &arg_1) {
00076     return invert (arg_1);
00077   }
00078   
00079   static mmx_ball(double, double)
00080   GLUE_12 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00081     return arg_1 + arg_2;
00082   }
00083   
00084   static mmx_ball(double, double)
00085   GLUE_13 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00086     return arg_1 - arg_2;
00087   }
00088   
00089   static mmx_ball(double, double)
00090   GLUE_14 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00091     return arg_1 * arg_2;
00092   }
00093   
00094   static mmx_ball(double, double)
00095   GLUE_15 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00096     return arg_1 + arg_2;
00097   }
00098   
00099   static mmx_ball(double, double)
00100   GLUE_16 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00101     return arg_1 + arg_2;
00102   }
00103   
00104   static mmx_ball(double, double)
00105   GLUE_17 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00106     return arg_1 - arg_2;
00107   }
00108   
00109   static mmx_ball(double, double)
00110   GLUE_18 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00111     return arg_1 - arg_2;
00112   }
00113   
00114   static mmx_ball(double, double)
00115   GLUE_19 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00116     return arg_1 * arg_2;
00117   }
00118   
00119   static mmx_ball(double, double)
00120   GLUE_20 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00121     return arg_1 * arg_2;
00122   }
00123   
00124   static mmx_ball(double, double)
00125   GLUE_21 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00126     return arg_1 / arg_2;
00127   }
00128   
00129   static mmx_ball(double, double)
00130   GLUE_22 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00131     return arg_1 / arg_2;
00132   }
00133   
00134   static mmx_ball(double, double)
00135   GLUE_23 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00136     return arg_1 / arg_2;
00137   }
00138   
00139   static bool
00140   GLUE_24 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00141     return arg_1 == arg_2;
00142   }
00143   
00144   static bool
00145   GLUE_25 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00146     return arg_1 != arg_2;
00147   }
00148   
00149   static bool
00150   GLUE_26 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00151     return arg_1 == arg_2;
00152   }
00153   
00154   static bool
00155   GLUE_27 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00156     return arg_1 != arg_2;
00157   }
00158   
00159   static bool
00160   GLUE_28 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00161     return arg_1 == arg_2;
00162   }
00163   
00164   static bool
00165   GLUE_29 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00166     return arg_1 != arg_2;
00167   }
00168   
00169   static bool
00170   GLUE_30 (const mmx_ball(double, double) &arg_1) {
00171     return is_finite (arg_1);
00172   }
00173   
00174   static bool
00175   GLUE_31 (const mmx_ball(double, double) &arg_1) {
00176     return is_infinite (arg_1);
00177   }
00178   
00179   static bool
00180   GLUE_32 (const mmx_ball(double, double) &arg_1) {
00181     return is_nan (arg_1);
00182   }
00183   
00184   static mmx_ball(double, double)
00185   GLUE_33 (const mmx_ball(double, double) &arg_1) {
00186     return times_infinity (arg_1);
00187   }
00188   
00189   static int
00190   GLUE_34 (const mmx_ball(double, double) &arg_1) {
00191     return precision (arg_1);
00192   }
00193   
00194   static mmx_ball(double, double)
00195   GLUE_35 (const mmx_ball(double, double) &arg_1, const int &arg_2) {
00196     return change_precision (arg_1, arg_2);
00197   }
00198   
00199   static int
00200   GLUE_36 (const mmx_ball(double, double) &arg_1) {
00201     return exponent (arg_1);
00202   }
00203   
00204   static double
00205   GLUE_37 (const mmx_ball(double, double) &arg_1) {
00206     return magnitude (arg_1);
00207   }
00208   
00209   static mmx_ball(double, double)
00210   GLUE_38 (const mmx_ball(double, double) &arg_1, const int &arg_2) {
00211     return incexp2 (arg_1, arg_2);
00212   }
00213   
00214   static mmx_ball(double, double)
00215   GLUE_39 (const mmx_ball(double, double) &arg_1, const int &arg_2) {
00216     return decexp2 (arg_1, arg_2);
00217   }
00218   
00219   static mmx_ball(double, complex<double> )
00220   GLUE_40 (const complex<double> &arg_1) {
00221     return make_mmx_ball (arg_1);
00222   }
00223   
00224   static mmx_ball(double, complex<double> )
00225   GLUE_41 (const complex<double> &arg_1, const double &arg_2) {
00226     return make_mmx_ball (arg_1, arg_2);
00227   }
00228   
00229   static mmx_ball(double, complex<double> )
00230   GLUE_42 (const complex<double> &arg_1) {
00231     return make_mmx_ball (arg_1);
00232   }
00233   
00234   static complex<double>
00235   GLUE_43 (const mmx_ball(double, complex<double> ) &arg_1) {
00236     return center (arg_1);
00237   }
00238   
00239   static double
00240   GLUE_44 (const mmx_ball(double, complex<double> ) &arg_1) {
00241     return mmx_radius (arg_1);
00242   }
00243   
00244   static mmx_ball(double, complex<double> )
00245   GLUE_45 (const mmx_ball(double, complex<double> ) &arg_1) {
00246     return sharpen (arg_1);
00247   }
00248   
00249   static mmx_ball(double, complex<double> )
00250   GLUE_46 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00251     return blur (arg_1, arg_2);
00252   }
00253   
00254   static bool
00255   GLUE_47 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00256     return included (arg_1, arg_2);
00257   }
00258   
00259   static mmx_ball(double, complex<double> )
00260   GLUE_48 (const mmx_ball(double, complex<double> ) &arg_1) {
00261     return -arg_1;
00262   }
00263   
00264   static mmx_ball(double, complex<double> )
00265   GLUE_49 (const mmx_ball(double, complex<double> ) &arg_1) {
00266     return square (arg_1);
00267   }
00268   
00269   static mmx_ball(double, complex<double> )
00270   GLUE_50 (const mmx_ball(double, complex<double> ) &arg_1) {
00271     return invert (arg_1);
00272   }
00273   
00274   static mmx_ball(double, complex<double> )
00275   GLUE_51 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00276     return arg_1 + arg_2;
00277   }
00278   
00279   static mmx_ball(double, complex<double> )
00280   GLUE_52 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00281     return arg_1 - arg_2;
00282   }
00283   
00284   static mmx_ball(double, complex<double> )
00285   GLUE_53 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00286     return arg_1 * arg_2;
00287   }
00288   
00289   static mmx_ball(double, complex<double> )
00290   GLUE_54 (const complex<double> &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00291     return arg_1 + arg_2;
00292   }
00293   
00294   static mmx_ball(double, complex<double> )
00295   GLUE_55 (const mmx_ball(double, complex<double> ) &arg_1, const complex<double> &arg_2) {
00296     return arg_1 + arg_2;
00297   }
00298   
00299   static mmx_ball(double, complex<double> )
00300   GLUE_56 (const complex<double> &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00301     return arg_1 - arg_2;
00302   }
00303   
00304   static mmx_ball(double, complex<double> )
00305   GLUE_57 (const mmx_ball(double, complex<double> ) &arg_1, const complex<double> &arg_2) {
00306     return arg_1 - arg_2;
00307   }
00308   
00309   static mmx_ball(double, complex<double> )
00310   GLUE_58 (const complex<double> &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00311     return arg_1 * arg_2;
00312   }
00313   
00314   static mmx_ball(double, complex<double> )
00315   GLUE_59 (const mmx_ball(double, complex<double> ) &arg_1, const complex<double> &arg_2) {
00316     return arg_1 * arg_2;
00317   }
00318   
00319   static mmx_ball(double, complex<double> )
00320   GLUE_60 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00321     return arg_1 / arg_2;
00322   }
00323   
00324   static mmx_ball(double, complex<double> )
00325   GLUE_61 (const mmx_ball(double, complex<double> ) &arg_1, const complex<double> &arg_2) {
00326     return arg_1 / arg_2;
00327   }
00328   
00329   static mmx_ball(double, complex<double> )
00330   GLUE_62 (const complex<double> &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00331     return arg_1 / arg_2;
00332   }
00333   
00334   static bool
00335   GLUE_63 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00336     return arg_1 == arg_2;
00337   }
00338   
00339   static bool
00340   GLUE_64 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00341     return arg_1 != arg_2;
00342   }
00343   
00344   static bool
00345   GLUE_65 (const mmx_ball(double, complex<double> ) &arg_1, const complex<double> &arg_2) {
00346     return arg_1 == arg_2;
00347   }
00348   
00349   static bool
00350   GLUE_66 (const mmx_ball(double, complex<double> ) &arg_1, const complex<double> &arg_2) {
00351     return arg_1 != arg_2;
00352   }
00353   
00354   static bool
00355   GLUE_67 (const complex<double> &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00356     return arg_1 == arg_2;
00357   }
00358   
00359   static bool
00360   GLUE_68 (const complex<double> &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00361     return arg_1 != arg_2;
00362   }
00363   
00364   static mmx_ball(double, double)
00365   GLUE_69 (const mmx_ball(double, double) &arg_1) {
00366     return sqrt (arg_1);
00367   }
00368   
00369   static mmx_ball(double, double)
00370   GLUE_70 (const mmx_ball(double, double) &arg_1) {
00371     return exp (arg_1);
00372   }
00373   
00374   static mmx_ball(double, double)
00375   GLUE_71 (const mmx_ball(double, double) &arg_1) {
00376     return log (arg_1);
00377   }
00378   
00379   static mmx_ball(double, double)
00380   GLUE_72 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00381     return pow (arg_1, arg_2);
00382   }
00383   
00384   static mmx_ball(double, double)
00385   GLUE_73 (const mmx_ball(double, double) &arg_1) {
00386     return cos (arg_1);
00387   }
00388   
00389   static mmx_ball(double, double)
00390   GLUE_74 (const mmx_ball(double, double) &arg_1) {
00391     return sin (arg_1);
00392   }
00393   
00394   static mmx_ball(double, double)
00395   GLUE_75 (const mmx_ball(double, double) &arg_1) {
00396     return tan (arg_1);
00397   }
00398   
00399   static mmx_ball(double, double)
00400   GLUE_76 (const mmx_ball(double, double) &arg_1) {
00401     return acos (arg_1);
00402   }
00403   
00404   static mmx_ball(double, double)
00405   GLUE_77 (const mmx_ball(double, double) &arg_1) {
00406     return asin (arg_1);
00407   }
00408   
00409   static mmx_ball(double, double)
00410   GLUE_78 (const mmx_ball(double, double) &arg_1) {
00411     return atan (arg_1);
00412   }
00413   
00414   static mmx_ball(double, double)
00415   GLUE_79 (const mmx_ball(double, double) &arg_1) {
00416     return next_above (arg_1);
00417   }
00418   
00419   static mmx_ball(double, double)
00420   GLUE_80 (const mmx_ball(double, double) &arg_1) {
00421     return next_below (arg_1);
00422   }
00423   
00424   static bool
00425   GLUE_81 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00426     return arg_1 < arg_2;
00427   }
00428   
00429   static bool
00430   GLUE_82 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00431     return arg_1 > arg_2;
00432   }
00433   
00434   static bool
00435   GLUE_83 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00436     return arg_1 <= arg_2;
00437   }
00438   
00439   static bool
00440   GLUE_84 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00441     return arg_1 >= arg_2;
00442   }
00443   
00444   static bool
00445   GLUE_85 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00446     return arg_1 < arg_2;
00447   }
00448   
00449   static bool
00450   GLUE_86 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00451     return arg_1 > arg_2;
00452   }
00453   
00454   static bool
00455   GLUE_87 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00456     return arg_1 <= arg_2;
00457   }
00458   
00459   static bool
00460   GLUE_88 (const mmx_ball(double, double) &arg_1, const double &arg_2) {
00461     return arg_1 >= arg_2;
00462   }
00463   
00464   static bool
00465   GLUE_89 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00466     return arg_1 < arg_2;
00467   }
00468   
00469   static bool
00470   GLUE_90 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00471     return arg_1 > arg_2;
00472   }
00473   
00474   static bool
00475   GLUE_91 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00476     return arg_1 <= arg_2;
00477   }
00478   
00479   static bool
00480   GLUE_92 (const double &arg_1, const mmx_ball(double, double) &arg_2) {
00481     return arg_1 >= arg_2;
00482   }
00483   
00484   static mmx_ball(double, double)
00485   GLUE_93 (const mmx_ball(double, double) &arg_1) {
00486     return abs (arg_1);
00487   }
00488   
00489   static mmx_ball(double, double)
00490   GLUE_94 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00491     return min (arg_1, arg_2);
00492   }
00493   
00494   static mmx_ball(double, double)
00495   GLUE_95 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00496     return max (arg_1, arg_2);
00497   }
00498   
00499   static mmx_ball(double, double)
00500   GLUE_96 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00501     return inf (arg_1, arg_2);
00502   }
00503   
00504   static mmx_ball(double, double)
00505   GLUE_97 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00506     return sup (arg_1, arg_2);
00507   }
00508   
00509   static mmx_ball(double, double)
00510   GLUE_98 (const mmx_ball(double, double) &arg_1) {
00511     return floor (arg_1);
00512   }
00513   
00514   static mmx_ball(double, double)
00515   GLUE_99 (const mmx_ball(double, double) &arg_1) {
00516     return ceil (arg_1);
00517   }
00518   
00519   static mmx_ball(double, double)
00520   GLUE_100 (const mmx_ball(double, double) &arg_1) {
00521     return trunc (arg_1);
00522   }
00523   
00524   static mmx_ball(double, double)
00525   GLUE_101 (const mmx_ball(double, double) &arg_1) {
00526     return round (arg_1);
00527   }
00528   
00529   static mmx_ball(double, double)
00530   GLUE_102 (const mmx_ball(double, complex<double> ) &arg_1) {
00531     return Re (arg_1);
00532   }
00533   
00534   static mmx_ball(double, double)
00535   GLUE_103 (const mmx_ball(double, complex<double> ) &arg_1) {
00536     return Im (arg_1);
00537   }
00538   
00539   static mmx_ball(double, complex<double> )
00540   GLUE_104 (const mmx_ball(double, complex<double> ) &arg_1) {
00541     return conj (arg_1);
00542   }
00543   
00544   static mmx_ball(double, complex<double> )
00545   GLUE_105 (const mmx_ball(double, complex<double> ) &arg_1) {
00546     return times_i (arg_1);
00547   }
00548   
00549   static mmx_ball(double, complex<double> )
00550   GLUE_106 (const mmx_ball(double, complex<double> ) &arg_1) {
00551     return over_i (arg_1);
00552   }
00553   
00554   static mmx_ball(double, complex<double> )
00555   GLUE_107 (const mmx_ball(double, double) &arg_1) {
00556     return gaussian (arg_1);
00557   }
00558   
00559   static mmx_ball(double, complex<double> )
00560   GLUE_108 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, double) &arg_2) {
00561     return gaussian (arg_1, arg_2);
00562   }
00563   
00564   static mmx_ball(double, double)
00565   GLUE_109 (const mmx_ball(double, complex<double> ) &arg_1) {
00566     return abs (arg_1);
00567   }
00568   
00569   static mmx_ball(double, double)
00570   GLUE_110 (const mmx_ball(double, complex<double> ) &arg_1) {
00571     return arg (arg_1);
00572   }
00573   
00574   static mmx_ball(double, complex<double> )
00575   GLUE_111 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00576     return cmul (arg_1, arg_2);
00577   }
00578   
00579   static mmx_ball(double, complex<double> )
00580   GLUE_112 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, double) &arg_2) {
00581     return cmul (arg_1, arg_2);
00582   }
00583   
00584   static mmx_ball(double, complex<double> )
00585   GLUE_113 (const mmx_ball(double, double) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00586     return cdiv (arg_1, arg_2);
00587   }
00588   
00589   static mmx_ball(double, complex<double> )
00590   GLUE_114 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, double) &arg_2) {
00591     return cdiv (arg_1, arg_2);
00592   }
00593   
00594   static mmx_ball(double, complex<double> )
00595   GLUE_115 (const mmx_ball(double, complex<double> ) &arg_1) {
00596     return sqrt (arg_1);
00597   }
00598   
00599   static mmx_ball(double, complex<double> )
00600   GLUE_116 (const mmx_ball(double, complex<double> ) &arg_1) {
00601     return exp (arg_1);
00602   }
00603   
00604   static mmx_ball(double, complex<double> )
00605   GLUE_117 (const mmx_ball(double, complex<double> ) &arg_1) {
00606     return log (arg_1);
00607   }
00608   
00609   static mmx_ball(double, complex<double> )
00610   GLUE_118 (const mmx_ball(double, complex<double> ) &arg_1, const mmx_ball(double, complex<double> ) &arg_2) {
00611     return pow (arg_1, arg_2);
00612   }
00613   
00614   static mmx_ball(double, complex<double> )
00615   GLUE_119 (const mmx_ball(double, complex<double> ) &arg_1) {
00616     return cos (arg_1);
00617   }
00618   
00619   static mmx_ball(double, complex<double> )
00620   GLUE_120 (const mmx_ball(double, complex<double> ) &arg_1) {
00621     return sin (arg_1);
00622   }
00623   
00624   static mmx_ball(double, complex<double> )
00625   GLUE_121 (const mmx_ball(double, complex<double> ) &arg_1) {
00626     return tan (arg_1);
00627   }
00628   
00629   static mmx_ball(double, complex<double> )
00630   GLUE_122 (const mmx_ball(double, complex<double> ) &arg_1) {
00631     return acos (arg_1);
00632   }
00633   
00634   static mmx_ball(double, complex<double> )
00635   GLUE_123 (const mmx_ball(double, complex<double> ) &arg_1) {
00636     return asin (arg_1);
00637   }
00638   
00639   static mmx_ball(double, complex<double> )
00640   GLUE_124 (const mmx_ball(double, complex<double> ) &arg_1) {
00641     return atan (arg_1);
00642   }
00643   
00644   static mmx_ball(double, complex<double> )
00645   GLUE_125 (const mmx_ball(double, double) &arg_1) {
00646     return as<mmx_ball(double, complex<double> ) > (arg_1);
00647   }
00648   
00649   static bool
00650   GLUE_126 (const mmx_ball(double, complex<double> ) &arg_1) {
00651     return is_finite (arg_1);
00652   }
00653   
00654   static bool
00655   GLUE_127 (const mmx_ball(double, complex<double> ) &arg_1) {
00656     return is_infinite (arg_1);
00657   }
00658   
00659   static bool
00660   GLUE_128 (const mmx_ball(double, complex<double> ) &arg_1) {
00661     return is_nan (arg_1);
00662   }
00663   
00664   static mmx_ball(double, complex<double> )
00665   GLUE_129 (const mmx_ball(double, complex<double> ) &arg_1) {
00666     return times_infinity (arg_1);
00667   }
00668   
00669   static int
00670   GLUE_130 (const mmx_ball(double, complex<double> ) &arg_1) {
00671     return precision (arg_1);
00672   }
00673   
00674   static mmx_ball(double, complex<double> )
00675   GLUE_131 (const mmx_ball(double, complex<double> ) &arg_1, const int &arg_2) {
00676     return change_precision (arg_1, arg_2);
00677   }
00678   
00679   static int
00680   GLUE_132 (const mmx_ball(double, complex<double> ) &arg_1) {
00681     return exponent (arg_1);
00682   }
00683   
00684   static double
00685   GLUE_133 (const mmx_ball(double, complex<double> ) &arg_1) {
00686     return magnitude (arg_1);
00687   }
00688   
00689   static mmx_ball(double, complex<double> )
00690   GLUE_134 (const mmx_ball(double, complex<double> ) &arg_1, const int &arg_2) {
00691     return incexp2 (arg_1, arg_2);
00692   }
00693   
00694   static mmx_ball(double, complex<double> )
00695   GLUE_135 (const mmx_ball(double, complex<double> ) &arg_1, const int &arg_2) {
00696     return decexp2 (arg_1, arg_2);
00697   }
00698   
00699   void
00700   glue_ball_double () {
00701     static bool done = false;
00702     if (done) return;
00703     done = true;
00704     call_glue (string ("glue_complex_double"));
00705     define_type<mmx_ball(double, double) > (gen (lit ("Ball"), lit ("Double"), lit ("Double")));
00706     define_type<mmx_ball(double, complex<double> ) > (gen (lit ("Ball"), lit ("Double"), gen (lit ("Complex"), lit ("Double"))));
00707     define ("ball", GLUE_1);
00708     define ("ball", GLUE_2);
00709     define_converter ("upgrade", GLUE_3, PENALTY_INCLUSION);
00710     define ("center", GLUE_4);
00711     define ("radius", GLUE_5);
00712     define ("sharpen", GLUE_6);
00713     define ("blur", GLUE_7);
00714     define ("included?", GLUE_8);
00715     define ("-", GLUE_9);
00716     define ("square", GLUE_10);
00717     define ("invert", GLUE_11);
00718     define ("+", GLUE_12);
00719     define ("-", GLUE_13);
00720     define ("*", GLUE_14);
00721     define ("+", GLUE_15);
00722     define ("+", GLUE_16);
00723     define ("-", GLUE_17);
00724     define ("-", GLUE_18);
00725     define ("*", GLUE_19);
00726     define ("*", GLUE_20);
00727     define ("/", GLUE_21);
00728     define ("/", GLUE_22);
00729     define ("/", GLUE_23);
00730     define ("=", GLUE_24);
00731     define ("!=", GLUE_25);
00732     define ("=", GLUE_26);
00733     define ("!=", GLUE_27);
00734     define ("=", GLUE_28);
00735     define ("!=", GLUE_29);
00736     define ("finite?", GLUE_30);
00737     define ("infinite?", GLUE_31);
00738     define ("nan?", GLUE_32);
00739     define ("times_infinity", GLUE_33);
00740     define ("precision", GLUE_34);
00741     define ("change_precision", GLUE_35);
00742     define ("exponent", GLUE_36);
00743     define ("magnitude", GLUE_37);
00744     define ("increase_exponent", GLUE_38);
00745     define ("decrease_exponent", GLUE_39);
00746     define ("ball", GLUE_40);
00747     define ("ball", GLUE_41);
00748     define_converter ("upgrade", GLUE_42, PENALTY_INCLUSION);
00749     define ("center", GLUE_43);
00750     define ("radius", GLUE_44);
00751     define ("sharpen", GLUE_45);
00752     define ("blur", GLUE_46);
00753     define ("included?", GLUE_47);
00754     define ("-", GLUE_48);
00755     define ("square", GLUE_49);
00756     define ("invert", GLUE_50);
00757     define ("+", GLUE_51);
00758     define ("-", GLUE_52);
00759     define ("*", GLUE_53);
00760     define ("+", GLUE_54);
00761     define ("+", GLUE_55);
00762     define ("-", GLUE_56);
00763     define ("-", GLUE_57);
00764     define ("*", GLUE_58);
00765     define ("*", GLUE_59);
00766     define ("/", GLUE_60);
00767     define ("/", GLUE_61);
00768     define ("/", GLUE_62);
00769     define ("=", GLUE_63);
00770     define ("!=", GLUE_64);
00771     define ("=", GLUE_65);
00772     define ("!=", GLUE_66);
00773     define ("=", GLUE_67);
00774     define ("!=", GLUE_68);
00775     define ("sqrt", GLUE_69);
00776     define ("exp", GLUE_70);
00777     define ("log", GLUE_71);
00778     define ("^", GLUE_72);
00779     define ("cos", GLUE_73);
00780     define ("sin", GLUE_74);
00781     define ("tan", GLUE_75);
00782     define ("arccos", GLUE_76);
00783     define ("arcsin", GLUE_77);
00784     define ("arctan", GLUE_78);
00785     define ("next_above", GLUE_79);
00786     define ("next_below", GLUE_80);
00787     define ("<", GLUE_81);
00788     define (">", GLUE_82);
00789     define ("<=", GLUE_83);
00790     define (">=", GLUE_84);
00791     define ("<", GLUE_85);
00792     define (">", GLUE_86);
00793     define ("<=", GLUE_87);
00794     define (">=", GLUE_88);
00795     define ("<", GLUE_89);
00796     define (">", GLUE_90);
00797     define ("<=", GLUE_91);
00798     define (">=", GLUE_92);
00799     define ("abs", GLUE_93);
00800     define ("min", GLUE_94);
00801     define ("max", GLUE_95);
00802     define ("inf", GLUE_96);
00803     define ("sup", GLUE_97);
00804     define ("floor", GLUE_98);
00805     define ("ceil", GLUE_99);
00806     define ("trunc", GLUE_100);
00807     define ("round", GLUE_101);
00808     define ("Re", GLUE_102);
00809     define ("Im", GLUE_103);
00810     define ("conj", GLUE_104);
00811     define ("times_i", GLUE_105);
00812     define ("over_i", GLUE_106);
00813     define ("complex", GLUE_107);
00814     define ("complex", GLUE_108);
00815     define ("abs", GLUE_109);
00816     define ("arg", GLUE_110);
00817     define ("*", GLUE_111);
00818     define ("*", GLUE_112);
00819     define ("/", GLUE_113);
00820     define ("/", GLUE_114);
00821     define ("sqrt", GLUE_115);
00822     define ("exp", GLUE_116);
00823     define ("log", GLUE_117);
00824     define ("^", GLUE_118);
00825     define ("cos", GLUE_119);
00826     define ("sin", GLUE_120);
00827     define ("tan", GLUE_121);
00828     define ("arccos", GLUE_122);
00829     define ("arcsin", GLUE_123);
00830     define ("arctan", GLUE_124);
00831     define_converter (":>", GLUE_125, PENALTY_HOMOMORPHISM);
00832     define ("finite?", GLUE_126);
00833     define ("infinite?", GLUE_127);
00834     define ("nan?", GLUE_128);
00835     define ("times_infinity", GLUE_129);
00836     define ("precision", GLUE_130);
00837     define ("change_precision", GLUE_131);
00838     define ("exponent", GLUE_132);
00839     define ("magnitude", GLUE_133);
00840     define ("increase_exponent", GLUE_134);
00841     define ("decrease_exponent", GLUE_135);
00842   }
00843 }