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 }