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/floating.hpp>
00012 #include <numerix/complex.hpp>
00013 #include <numerix/complex_double.hpp>
00014 #include <numerix/ball.hpp>
00015 #include <numerix/ball_complex.hpp>
00016 #include <algebramix/vector_unrolled.hpp>
00017 #include <algebramix/vector_simd.hpp>
00018 #include <algebramix/vector_modular.hpp>
00019 #include <analyziz/vector_double.hpp>
00020 #include <analyziz/vector_floating.hpp>
00021 #include <analyziz/vector_ball.hpp>
00022 #include <basix/compound.hpp>
00023 #include <basix/mmx_syntax.hpp>
00024 #include <basix/lisp_syntax.hpp>
00025 #include <basix/cpp_syntax.hpp>
00026 #include <basix/syntactic.hpp>
00027 #include <algebramix/polynomial.hpp>
00028 #include <algebramix/polynomial_polynomial.hpp>
00029 #include <algebramix/polynomial_integer.hpp>
00030 #include <algebramix/polynomial_rational.hpp>
00031 #include <algebramix/polynomial_modular.hpp>
00032 #include <algebramix/polynomial_modular_integer.hpp>
00033 #include <algebramix/polynomial_complex.hpp>
00034 #include <algebramix/polynomial_schonhage.hpp>
00035 #include <analyziz/polynomial_numeric.hpp>
00036 #include <analyziz/polynomial_double.hpp>
00037 #include <analyziz/polynomial_floating.hpp>
00038 #include <analyziz/polynomial_ball.hpp>
00039 #include <analyziz/solver.hpp>
00040 #include <analyziz/solver_aberth.hpp>
00041 #include <analyziz/solver_floating.hpp>
00042 #include <analyziz/solver_ball.hpp>
00043 #include <algebramix/series.hpp>
00044 #include <algebramix/series_elementary.hpp>
00045 #include <algebramix/series_integer.hpp>
00046 #include <algebramix/series_rational.hpp>
00047 #include <algebramix/series_modular_integer.hpp>
00048 #include <algebramix/series_complex.hpp>
00049 #include <analyziz/series_double.hpp>
00050 #include <analyziz/series_floating.hpp>
00051 #include <analyziz/series_ball.hpp>
00052 #include <continewz/analytic_vector.hpp>
00053 #include <continewz/analytic_heuristic.hpp>
00054 #include <continewz/analytic_sugar.hpp>
00055 #include <basix/alias.hpp>
00056 #include <basix/routine.hpp>
00057 #include <basix/tuple.hpp>
00058 #include <basix/glue.hpp>
00059
00060 #define int_literal(x) as_int (as_string (x))
00061 #define is_generic_literal is<literal>
00062 #define gen_literal_apply(f,v) gen (as<generic> (f), v)
00063 #define gen_literal_access(f,v) access (as<generic> (f), v)
00064 #define double_literal(x) as_double (as_string (x))
00065 #define is_generic_compound is<compound>
00066 #define compound_arguments(x) cdr (as_vector (x))
00067 #define gen_compound_apply(f,v) gen (as<generic> (f), v)
00068 namespace mmx {
00069 template<typename C> polynomial<C>
00070 polynomial_reverse (const vector<C>& v) {
00071 return polynomial<C> (reverse (v)); }
00072
00073 template<typename C> polynomial<modular<modulus<C>, modular_local> >
00074 as_polynomial_modular (const polynomial<C>& f, const modulus<C>& p) {
00075 modular<modulus<C>, modular_local>::set_modulus (p);
00076 return as<polynomial<modular<modulus<C>, modular_local> > > (f); }
00077
00078 template<typename C> vector<generic>
00079 wrap_subresultants (const polynomial<C>& f, const polynomial<C>& g) {
00080 return as<vector<generic> > (subresultants (f, g)); }
00081
00082 }
00083 namespace mmx { POLYNOMIAL_GENERIC_USES_SCHONHAGE }
00084
00085 namespace mmx {
00086 static vector<generic>
00087 GLUE_1 (const routine &arg_1, const vector<generic> &arg_2) {
00088 return gen_fixed_point_vector_analytic (arg_1, arg_2);
00089 }
00090
00091 static vector<generic>
00092 GLUE_2 (const routine &arg_1, const vector<generic> &arg_2) {
00093 return gen_integrate_vector_analytic (arg_1, arg_2);
00094 }
00095
00096 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00097 GLUE_3 (const tuple<mmx_ball(mmx_floating, mmx_floating) > &arg_1) {
00098 return analytic_complex (as_vector (arg_1));
00099 }
00100
00101 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00102 GLUE_4 (const tuple<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_1) {
00103 return make_mmx_analytic (as_vector (arg_1));
00104 }
00105
00106 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00107 GLUE_5 (const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_1) {
00108 return make_mmx_analytic (arg_1);
00109 }
00110
00111 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00112 GLUE_6 (const polynomial<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_1) {
00113 return make_mmx_analytic (arg_1);
00114 }
00115
00116 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00117 GLUE_7 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00118 return fast_eval (arg_1);
00119 }
00120
00121 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00122 GLUE_8 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00123 return cache_last (arg_1);
00124 }
00125
00126 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00127 GLUE_9 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00128 return rough (arg_1);
00129 }
00130
00131 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00132 GLUE_10 (const polynomial<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_1) {
00133 return std_heuristic (arg_1);
00134 }
00135
00136 static mmx_ball(mmx_floating, complex<mmx_floating> )
00137 GLUE_11 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const int &arg_2) {
00138 return arg_1[arg_2];
00139 }
00140
00141 static polynomial<mmx_ball(mmx_floating, complex<mmx_floating> ) >
00142 GLUE_12 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const int &arg_2, const int &arg_3) {
00143 return range (arg_1, arg_2, arg_3);
00144 }
00145
00146 static mmx_ball(mmx_floating, mmx_floating)
00147 GLUE_13 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00148 return radius_bound (arg_1);
00149 }
00150
00151 static mmx_ball(mmx_floating, mmx_floating)
00152 GLUE_14 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, mmx_floating) &arg_2) {
00153 return upper_bound (arg_1, arg_2);
00154 }
00155
00156 static mmx_ball(mmx_floating, mmx_floating)
00157 GLUE_15 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, mmx_floating) &arg_2) {
00158 return lower_bound (arg_1, arg_2);
00159 }
00160
00161 static mmx_ball(mmx_floating, mmx_floating)
00162 GLUE_16 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, mmx_floating) &arg_2, const int &arg_3) {
00163 return head_bound (arg_1, arg_2, arg_3);
00164 }
00165
00166 static mmx_ball(mmx_floating, mmx_floating)
00167 GLUE_17 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, mmx_floating) &arg_2, const int &arg_3) {
00168 return tail_bound (arg_1, arg_2, arg_3);
00169 }
00170
00171 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00172 GLUE_18 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00173 return radial_move (arg_1, arg_2);
00174 }
00175
00176 static mmx_ball(mmx_floating, complex<mmx_floating> )
00177 GLUE_19 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00178 return radial_eval (arg_1, arg_2);
00179 }
00180
00181 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00182 GLUE_20 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const vector<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_2) {
00183 return move (arg_1, arg_2);
00184 }
00185
00186 static mmx_ball(mmx_floating, complex<mmx_floating> )
00187 GLUE_21 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const vector<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_2) {
00188 return eval (arg_1, arg_2);
00189 }
00190
00191 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00192 GLUE_22 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00193 return move (arg_1, arg_2);
00194 }
00195
00196 static mmx_ball(mmx_floating, complex<mmx_floating> )
00197 GLUE_23 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00198 return eval (arg_1, arg_2);
00199 }
00200
00201 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00202 GLUE_24 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00203 return -arg_1;
00204 }
00205
00206 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00207 GLUE_25 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00208 return square (arg_1);
00209 }
00210
00211 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00212 GLUE_26 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00213 return arg_1 + arg_2;
00214 }
00215
00216 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00217 GLUE_27 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00218 return arg_1 - arg_2;
00219 }
00220
00221 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00222 GLUE_28 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00223 return arg_1 * arg_2;
00224 }
00225
00226 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00227 GLUE_29 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00228 return arg_1 / arg_2;
00229 }
00230
00231 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00232 GLUE_30 (const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00233 return arg_1 + arg_2;
00234 }
00235
00236 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00237 GLUE_31 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00238 return arg_1 + arg_2;
00239 }
00240
00241 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00242 GLUE_32 (const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00243 return arg_1 - arg_2;
00244 }
00245
00246 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00247 GLUE_33 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00248 return arg_1 - arg_2;
00249 }
00250
00251 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00252 GLUE_34 (const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00253 return arg_1 * arg_2;
00254 }
00255
00256 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00257 GLUE_35 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00258 return arg_1 * arg_2;
00259 }
00260
00261 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00262 GLUE_36 (const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00263 return arg_1 / arg_2;
00264 }
00265
00266 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00267 GLUE_37 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00268 return arg_1 / arg_2;
00269 }
00270
00271 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00272 GLUE_38 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00273 return derive (arg_1);
00274 }
00275
00276 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00277 GLUE_39 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00278 return xderive (arg_1);
00279 }
00280
00281 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00282 GLUE_40 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00283 return integrate (arg_1);
00284 }
00285
00286 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00287 GLUE_41 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00288 return compose (arg_1, arg_2);
00289 }
00290
00291 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00292 GLUE_42 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00293 return reverse (arg_1);
00294 }
00295
00296 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00297 GLUE_43 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00298 return sqrt (arg_1);
00299 }
00300
00301 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00302 GLUE_44 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00303 return exp (arg_1);
00304 }
00305
00306 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00307 GLUE_45 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00308 return log (arg_1);
00309 }
00310
00311 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00312 GLUE_46 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1, const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_2) {
00313 return pow (arg_1, arg_2);
00314 }
00315
00316 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00317 GLUE_47 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00318 return cos (arg_1);
00319 }
00320
00321 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00322 GLUE_48 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00323 return sin (arg_1);
00324 }
00325
00326 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00327 GLUE_49 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00328 return tan (arg_1);
00329 }
00330
00331 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00332 GLUE_50 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00333 return acos (arg_1);
00334 }
00335
00336 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00337 GLUE_51 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00338 return asin (arg_1);
00339 }
00340
00341 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00342 GLUE_52 (const mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) &arg_1) {
00343 return atan (arg_1);
00344 }
00345
00346 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00347 GLUE_53 (const routine &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00348 return fixed_point_analytic (arg_1, arg_2);
00349 }
00350
00351 static vector<generic>
00352 GLUE_54 (const routine &arg_1, const vector<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_2) {
00353 return gen_fixed_point_vector_analytic (arg_1, arg_2);
00354 }
00355
00356 static mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) )
00357 GLUE_55 (const routine &arg_1, const mmx_ball(mmx_floating, complex<mmx_floating> ) &arg_2) {
00358 return integrate_analytic (arg_1, arg_2);
00359 }
00360
00361 static vector<generic>
00362 GLUE_56 (const routine &arg_1, const vector<mmx_ball(mmx_floating, complex<mmx_floating> ) > &arg_2) {
00363 return gen_integrate_vector_analytic (arg_1, arg_2);
00364 }
00365
00366 void
00367 glue_analytic_ball_floating () {
00368 static bool done = false;
00369 if (done) return;
00370 done = true;
00371 call_glue (string ("glue_polynomial_ball_floating"));
00372 static alias<double> mmx_radius_ratio_alias = global_alias (((double&) mmx_radius_ratio));
00373 define_constant<alias<double> > ("radius_ratio", mmx_radius_ratio_alias);
00374 static alias<double> mmx_order_ratio_alias = global_alias (((double&) mmx_order_ratio));
00375 define_constant<alias<double> > ("order_ratio", mmx_order_ratio_alias);
00376 define ("fixed_point_analytic", GLUE_1);
00377 define ("integrate_analytic", GLUE_2);
00378 define_type<mmx_analytic(mmx_ball(mmx_floating, mmx_floating) , mmx_ball(mmx_floating, complex<mmx_floating> ) ) > (gen (lit ("Analytic"), gen (lit ("Ball"), lit ("Floating"), lit ("Floating")), gen (lit ("Ball"), lit ("Floating"), gen (lit ("Complex"), lit ("Floating")))));
00379 define ("analytic", GLUE_3);
00380 define ("analytic", GLUE_4);
00381 define_converter ("upgrade", GLUE_5, PENALTY_INCLUSION);
00382 define_converter ("upgrade", GLUE_6, PENALTY_INCLUSION);
00383 define ("fast_eval", GLUE_7);
00384 define ("cache_last", GLUE_8);
00385 define ("rough", GLUE_9);
00386 define ("heuristic", GLUE_10);
00387 define (".[]", GLUE_11);
00388 define (".[]", GLUE_12);
00389 define ("radius_bound", GLUE_13);
00390 define ("upper_bound", GLUE_14);
00391 define ("lower_bound", GLUE_15);
00392 define ("head_bound", GLUE_16);
00393 define ("tail_bound", GLUE_17);
00394 define ("#", GLUE_18);
00395 define (".()", GLUE_19);
00396 define ("#", GLUE_20);
00397 define (".()", GLUE_21);
00398 define ("move", GLUE_22);
00399 define ("eval", GLUE_23);
00400 define ("-", GLUE_24);
00401 define ("square", GLUE_25);
00402 define ("+", GLUE_26);
00403 define ("-", GLUE_27);
00404 define ("*", GLUE_28);
00405 define ("/", GLUE_29);
00406 define ("+", GLUE_30);
00407 define ("+", GLUE_31);
00408 define ("-", GLUE_32);
00409 define ("-", GLUE_33);
00410 define ("*", GLUE_34);
00411 define ("*", GLUE_35);
00412 define ("/", GLUE_36);
00413 define ("/", GLUE_37);
00414 define ("derive", GLUE_38);
00415 define ("xderive", GLUE_39);
00416 define ("integrate", GLUE_40);
00417 define ("@", GLUE_41);
00418 define ("reverse", GLUE_42);
00419 define ("sqrt", GLUE_43);
00420 define ("exp", GLUE_44);
00421 define ("log", GLUE_45);
00422 define ("^", GLUE_46);
00423 define ("cos", GLUE_47);
00424 define ("sin", GLUE_48);
00425 define ("tan", GLUE_49);
00426 define ("arccos", GLUE_50);
00427 define ("arcsin", GLUE_51);
00428 define ("arctan", GLUE_52);
00429 define ("fixed_point_analytic", GLUE_53);
00430 define ("fixed_point_analytic", GLUE_54);
00431 define ("integrate_analytic", GLUE_55);
00432 define ("integrate_analytic", GLUE_56);
00433 }
00434 }