algebramix_doc 0.3
/Users/mourrain/Devel/mmx/algebramix/glue/glue_vector_int.cpp
Go to the documentation of this file.
00001 
00002 #include <basix/int.hpp>
00003 #include <basix/vector.hpp>
00004 #include <algebramix/vector_unrolled.hpp>
00005 #include <algebramix/vector_simd.hpp>
00006 #include <basix/tuple.hpp>
00007 #include <basix/alias.hpp>
00008 #include <basix/glue.hpp>
00009 
00010 #define int_literal(x) as_int (as_string (x))
00011 
00012 namespace mmx {
00013   static vector<int>
00014   GLUE_1 (const tuple<int> &arg_1) {
00015     return vector<int > (as_vector (arg_1));
00016   }
00017   
00018   static vector<int>
00019   GLUE_2 (const tuple<int> &arg_1) {
00020     return vector<int > (as_vector (arg_1));
00021   }
00022   
00023   static iterator<generic>
00024   GLUE_3 (const vector<int> &arg_1) {
00025     return as<iterator<generic> > (iterate (arg_1));
00026   }
00027   
00028   static int
00029   GLUE_4 (const vector<int> &arg_1) {
00030     return N (arg_1);
00031   }
00032   
00033   static int
00034   GLUE_5 (const vector<int> &arg_1, const int &arg_2) {
00035     return arg_1[arg_2];
00036   }
00037   
00038   static alias<int>
00039   GLUE_6 (const alias<vector<int> > &arg_1, const int &arg_2) {
00040     return alias_access<int > (arg_1, arg_2);
00041   }
00042   
00043   static vector<int>
00044   GLUE_7 (const vector<int> &arg_1, const int &arg_2, const int &arg_3) {
00045     return range (arg_1, arg_2, arg_3);
00046   }
00047   
00048   static vector<int>
00049   GLUE_8 (const vector<int> &arg_1) {
00050     return reverse (arg_1);
00051   }
00052   
00053   static vector<int>
00054   GLUE_9 (const vector<int> &arg_1, const vector<int> &arg_2) {
00055     return append (arg_1, arg_2);
00056   }
00057   
00058   static alias<vector<int> >
00059   GLUE_10 (const alias<vector<int> > &arg_1, const vector<int> &arg_2) {
00060     return alias_write (arg_1, arg_2);
00061   }
00062   
00063   static vector<int>
00064   GLUE_11 (const int &arg_1, const vector<int> &arg_2) {
00065     return cons (arg_1, arg_2);
00066   }
00067   
00068   static int
00069   GLUE_12 (const vector<int> &arg_1) {
00070     return car (arg_1);
00071   }
00072   
00073   static vector<int>
00074   GLUE_13 (const vector<int> &arg_1) {
00075     return cdr (arg_1);
00076   }
00077   
00078   static bool
00079   GLUE_14 (const vector<int> &arg_1) {
00080     return is_nil (arg_1);
00081   }
00082   
00083   static bool
00084   GLUE_15 (const vector<int> &arg_1) {
00085     return is_atom (arg_1);
00086   }
00087   
00088   static vector<int>
00089   GLUE_16 (const vector<int> &arg_1, const int &arg_2) {
00090     return insert (arg_1, arg_2);
00091   }
00092   
00093   static int
00094   GLUE_17 (const vector<int> &arg_1, const int &arg_2) {
00095     return find (arg_1, arg_2);
00096   }
00097   
00098   static bool
00099   GLUE_18 (const vector<int> &arg_1, const int &arg_2) {
00100     return contains (arg_1, arg_2);
00101   }
00102   
00103   static vector<int>
00104   GLUE_19 (const vector<int> &arg_1) {
00105     return -arg_1;
00106   }
00107   
00108   static vector<int>
00109   GLUE_20 (const vector<int> &arg_1) {
00110     return square (arg_1);
00111   }
00112   
00113   static vector<int>
00114   GLUE_21 (const vector<int> &arg_1, const vector<int> &arg_2) {
00115     return arg_1 + arg_2;
00116   }
00117   
00118   static vector<int>
00119   GLUE_22 (const vector<int> &arg_1, const vector<int> &arg_2) {
00120     return arg_1 - arg_2;
00121   }
00122   
00123   static vector<int>
00124   GLUE_23 (const vector<int> &arg_1, const vector<int> &arg_2) {
00125     return arg_1 * arg_2;
00126   }
00127   
00128   static vector<int>
00129   GLUE_24 (const int &arg_1, const vector<int> &arg_2) {
00130     return arg_1 + arg_2;
00131   }
00132   
00133   static vector<int>
00134   GLUE_25 (const vector<int> &arg_1, const int &arg_2) {
00135     return arg_1 + arg_2;
00136   }
00137   
00138   static vector<int>
00139   GLUE_26 (const int &arg_1, const vector<int> &arg_2) {
00140     return arg_1 - arg_2;
00141   }
00142   
00143   static vector<int>
00144   GLUE_27 (const vector<int> &arg_1, const int &arg_2) {
00145     return arg_1 - arg_2;
00146   }
00147   
00148   static vector<int>
00149   GLUE_28 (const int &arg_1, const vector<int> &arg_2) {
00150     return arg_1 * arg_2;
00151   }
00152   
00153   static vector<int>
00154   GLUE_29 (const vector<int> &arg_1, const int &arg_2) {
00155     return arg_1 * arg_2;
00156   }
00157   
00158   static int
00159   GLUE_30 (const vector<int> &arg_1, const vector<int> &arg_2) {
00160     return dot (arg_1, arg_2);
00161   }
00162   
00163   static int
00164   GLUE_31 (const vector<int> &arg_1) {
00165     return big_mul (arg_1);
00166   }
00167   
00168   static int
00169   GLUE_32 (const vector<int> &arg_1) {
00170     return big_add (arg_1);
00171   }
00172   
00173   static bool
00174   GLUE_33 (const vector<int> &arg_1, const vector<int> &arg_2) {
00175     return arg_1 <= arg_2;
00176   }
00177   
00178   static bool
00179   GLUE_34 (const vector<int> &arg_1, const vector<int> &arg_2) {
00180     return arg_1 >= arg_2;
00181   }
00182   
00183   static bool
00184   GLUE_35 (const vector<int> &arg_1, const vector<int> &arg_2) {
00185     return arg_1 < arg_2;
00186   }
00187   
00188   static bool
00189   GLUE_36 (const vector<int> &arg_1, const vector<int> &arg_2) {
00190     return arg_1 > arg_2;
00191   }
00192   
00193   static vector<generic>
00194   GLUE_37 (const vector<int> &arg_1) {
00195     return as<vector<generic> > (arg_1);
00196   }
00197   
00198   void
00199   glue_vector_int () {
00200     static bool done = false;
00201     if (done) return;
00202     done = true;
00203     call_glue (string ("glue_int"));
00204     call_glue (string ("glue_vector_generic"));
00205     define_type<vector<int> > (gen (lit ("Vector"), lit ("Int")));
00206     define ("vector", GLUE_1);
00207     define ("[]", GLUE_2);
00208     define_converter (":>", GLUE_3, PENALTY_CAST);
00209     define ("#", GLUE_4);
00210     define (".[]", GLUE_5);
00211     define (".[]", GLUE_6);
00212     define (".[]", GLUE_7);
00213     define ("reverse", GLUE_8);
00214     define ("><", GLUE_9);
00215     define ("<<", GLUE_10);
00216     define ("cons", GLUE_11);
00217     define ("car", GLUE_12);
00218     define ("cdr", GLUE_13);
00219     define ("nil?", GLUE_14);
00220     define ("atom?", GLUE_15);
00221     define ("insert", GLUE_16);
00222     define ("find", GLUE_17);
00223     define ("contains?", GLUE_18);
00224     define ("-", GLUE_19);
00225     define ("square", GLUE_20);
00226     define ("+", GLUE_21);
00227     define ("-", GLUE_22);
00228     define ("*", GLUE_23);
00229     define ("+", GLUE_24);
00230     define ("+", GLUE_25);
00231     define ("-", GLUE_26);
00232     define ("-", GLUE_27);
00233     define ("*", GLUE_28);
00234     define ("*", GLUE_29);
00235     define ("dot", GLUE_30);
00236     define ("big_mul", GLUE_31);
00237     define ("big_add", GLUE_32);
00238     define ("<=", GLUE_33);
00239     define (">=", GLUE_34);
00240     define ("<", GLUE_35);
00241     define (">", GLUE_36);
00242     define_converter (":>", GLUE_37, PENALTY_PROMOTE_GENERIC);
00243   }
00244 }
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines