Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
jblas.hpp
Go to the documentation of this file.
00001 
00002 /* $Id$ */
00003 
00012 #ifndef JMATH_JBLAS_HPP
00013 #define JMATH_JBLAS_HPP
00014 
00015 #ifdef USE_JMATH_SERIALIZATION
00016 #include "jmath/serialize_vector.hpp"
00017 #include "jmath/serialize_matrix.hpp"
00018 #include "jmath/serialize_symmetric.hpp"
00019 #include "jmath/serialize_banded.hpp"
00020 #else
00021 #include <boost/numeric/ublas/vector.hpp>
00022 #include <boost/numeric/ublas/matrix.hpp>
00023 #include <boost/numeric/ublas/symmetric.hpp>
00024 #include <boost/numeric/ublas/banded.hpp>
00025 #endif
00026 #include <boost/numeric/ublas/io.hpp>
00027 #include <boost/numeric/ublas/triangular.hpp>
00028 #include <boost/numeric/ublas/matrix_proxy.hpp>
00029 #include <boost/numeric/ublas/vector_proxy.hpp>
00030 #include <boost/numeric/ublas/matrix_sparse.hpp>
00031 
00032 #include "boost/math/quaternion.hpp"
00033 
00034 #include "jmath/ublasCompatibility.hpp"
00035 #include "jmath/boundedSymmetricMatrix.hpp"
00036 
00039 
00041 //namespace ublas = boost::numeric::ublas; // don't use, swig doesn't handle it correctly
00042 
00044 namespace jblas {
00045 
00046   /*
00047    * scalar type double
00048    */
00049 
00051   typedef boost::numeric::ublas::vector<double> vec;
00052   typedef boost::numeric::ublas::vector_range<vec> vec_range; 
00053   typedef boost::numeric::ublas::vector_slice<vec> vec_slice;
00054   typedef boost::numeric::ublas::vector_indirect<vec> vec_indirect;
00055   typedef boost::numeric::ublas::vector_range<const vec> cvec_range; 
00056   typedef boost::numeric::ublas::zero_vector<double> zero_vec;
00057   typedef boost::numeric::ublas::unit_vector<double> unit_vec;
00058   typedef boost::numeric::ublas::scalar_vector<double> scalar_vec;
00059 
00061   typedef boost::numeric::ublas::bounded_vector<double,1> vec1;
00063   typedef boost::numeric::ublas::bounded_vector<double,2> vec2;
00065   typedef boost::numeric::ublas::bounded_vector<double,3> vec3;
00067   typedef boost::numeric::ublas::bounded_vector<double,4> vec4;
00068   typedef boost::numeric::ublas::vector_range<vec4> vec4_range; 
00070   typedef boost::numeric::ublas::bounded_vector<double,6> vec6;
00072   typedef boost::numeric::ublas::bounded_vector<double,7> vec7;
00074   typedef boost::numeric::ublas::bounded_vector<double,8> vec8;
00076   typedef boost::numeric::ublas::bounded_vector<double,9> vec9;
00078   typedef boost::numeric::ublas::bounded_vector<double,10> vec10;
00080   typedef boost::numeric::ublas::bounded_vector<double,11> vec11;
00081 
00082 
00084   typedef boost::numeric::ublas::matrix<double> mat;
00085   
00086   typedef boost::numeric::ublas::matrix_range<mat> mat_range;
00087   typedef boost::numeric::ublas::matrix_slice<mat> mat_slice;
00088   typedef boost::numeric::ublas::matrix_indirect<mat> mat_indirect;
00089   typedef boost::numeric::ublas::matrix_range<const mat> cmat_range;
00090   typedef boost::numeric::ublas::zero_matrix<double> zero_mat;
00091   typedef boost::numeric::ublas::identity_matrix<double> identity_mat;
00092   typedef boost::numeric::ublas::matrix_vector_range<mat> mat_vec_range;
00093   typedef boost::numeric::ublas::scalar_matrix<double> scalar_mat;
00095   typedef boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major> mat_column_major;
00096   typedef boost::numeric::ublas::matrix_range<const mat_column_major> cmat_column_major_range;
00097   typedef boost::numeric::ublas::matrix_range<mat_column_major> mat_column_major_range;
00098 
00100   typedef boost::numeric::ublas::diagonal_matrix<double> diag_mat;
00101 
00103   typedef boost::numeric::ublas::bounded_matrix<double,2,2> mat22; // 2x2
00104   typedef boost::numeric::ublas::bounded_matrix<double,2,3> mat23; // 2x3
00105   typedef boost::numeric::ublas::bounded_matrix<double,3,2> mat32; // 3x2
00106   typedef boost::numeric::ublas::bounded_matrix<double,3,3> mat33; // 3x3
00107   typedef boost::numeric::ublas::matrix_range<mat33> mat33_range; //  3x3
00108   typedef boost::numeric::ublas::bounded_matrix<double,3,4> mat34; // 3x4
00109   typedef boost::numeric::ublas::matrix_range<mat34> mat34_range; //  3x4
00110   typedef boost::numeric::ublas::bounded_matrix<double,4,3> mat43; // 4x3
00111   typedef boost::numeric::ublas::matrix_range<mat43> mat43_range; //  4x3
00112   typedef boost::numeric::ublas::bounded_matrix<double,4,4> mat44; // 4x4
00113   typedef boost::numeric::ublas::matrix_range<mat44> mat44_range; //  4x4
00114   typedef boost::numeric::ublas::bounded_matrix<double,6,6> mat66; // 6x6
00115   typedef boost::numeric::ublas::matrix_range<mat66> mat66_range; //  6x6
00116   typedef boost::numeric::ublas::bounded_matrix<double,8,8> mat88; // 8x8
00117   typedef boost::numeric::ublas::matrix_range<mat88> mat88_range; //  8x8
00118   typedef boost::numeric::ublas::bounded_matrix<double,9,9> mat99; // 9x9
00119   typedef boost::numeric::ublas::matrix_range<mat99> mat99_range; //  9x9
00120   
00122   typedef boost::numeric::ublas::symmetric_matrix<double> sym_mat;
00124   typedef boost::numeric::ublas::matrix_range<sym_mat> sym_mat_range; 
00126   typedef boost::numeric::ublas::matrix_indirect<sym_mat> sym_mat_indirect;
00127   typedef boost::numeric::ublas::symmetric_matrix<double, boost::numeric::ublas::upper> up_sym_mat;
00128   typedef boost::numeric::ublas::matrix_range<up_sym_mat> up_sym_mat_range;
00129   typedef boost::numeric::ublas::symmetric_matrix<double, boost::numeric::ublas::lower> lo_sym_mat;
00130 
00131   typedef boost::numeric::ublas::symmetric_matrix<double, boost::numeric::ublas::column_major> sym_mat_column_major;
00132     
00134   typedef bounded_symmetric_matrix<double, 2 > sym_mat22;
00136   typedef bounded_symmetric_matrix<double, 3 > sym_mat33;
00138   typedef bounded_symmetric_matrix<double, 4 > sym_mat44;
00139   
00141   typedef boost::numeric::ublas::banded_matrix<double> banded_mat;
00142 
00144   typedef boost::numeric::ublas::matrix_vector_slice<mat> mat_vec_slice;
00145   typedef boost::numeric::ublas::matrix_vector_slice<sym_mat> sym_mat_vec_slice;
00146 
00148   typedef boost::numeric::ublas::matrix_column<mat> mat_column;
00149 
00151   typedef boost::numeric::ublas::compressed_matrix<double> sp_mat;
00152   
00154   typedef boost::numeric::ublas::indirect_array<> ind_array;
00155 
00157   typedef boost::math::quaternion<double> quat;
00158 
00159   /*
00160    * Scalar type float
00161    */
00162 
00164   typedef boost::numeric::ublas::vector<float> vecf;
00165   typedef boost::numeric::ublas::scalar_vector<float> scalar_vecf;
00166 
00168   typedef boost::numeric::ublas::bounded_vector<float,1> vecf1;
00170   typedef boost::numeric::ublas::bounded_vector<float,2> vecf2;
00172   typedef boost::numeric::ublas::bounded_vector<float,3> vecf3;
00174   typedef boost::numeric::ublas::bounded_vector<float,4> vecf4;
00176   typedef boost::numeric::ublas::bounded_vector<float,6> vecf6;
00178   typedef boost::numeric::ublas::bounded_vector<float,8> vecf8;
00179 
00180   /*
00181    * scalar type int
00182    */
00184   typedef boost::numeric::ublas::vector<int> veci;
00186   typedef boost::numeric::ublas::bounded_vector<int,2> veci2;
00188   typedef boost::numeric::ublas::bounded_vector<int,3> veci3;
00190   typedef boost::numeric::ublas::bounded_vector<int,4> veci4;
00191   
00192   typedef boost::numeric::ublas::zero_vector<int> zero_veci;
00193   typedef boost::numeric::ublas::matrix<int> mati;
00194   typedef boost::numeric::ublas::zero_matrix<int> zero_mati;
00195   
00196   /*
00197    * scalar type bool
00198    */
00199   
00203   typedef boost::numeric::ublas::matrix<bool> bool_mat;
00204 
00206   typedef boost::numeric::ublas::matrix<bool> matb;
00207   typedef boost::numeric::ublas::vector<bool> vecb;
00208 
00212   typedef boost::numeric::ublas::upper upper;
00213   typedef boost::numeric::ublas::lower lower;
00214   
00215   typedef boost::numeric::ublas::symmetric_adaptor<const jblas::mat       > sym_adapt;
00216   typedef boost::numeric::ublas::symmetric_adaptor<const jblas::mat, upper> up_sym_adapt;
00217   typedef boost::numeric::ublas::symmetric_adaptor<const jblas::mat, lower> lo_sym_adapt;
00218   typedef boost::numeric::ublas::symmetric_adaptor<jblas::mat_column_major        > sym_adapt_column_major; 
00219   typedef boost::numeric::ublas::symmetric_adaptor<jblas::mat_column_major, upper > up_sym_adapt_column_major; 
00220   typedef boost::numeric::ublas::symmetric_adaptor<jblas::mat_column_major, lower > lo_sym_adapt_column_major; 
00221   
00225   typedef boost::numeric::ublas::matrix_row< jblas::mat_column_major > mat_colum_major_row;
00226 } // namespace jblas
00227 
00229 /* End of Doxygen group */
00230 
00231 #endif // JMATH_JBLAS_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:21 for Jafar by doxygen 1.7.6.1
LAAS-CNRS