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 }