00001
00002
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
00042
00044 namespace jblas {
00045
00046
00047
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;
00104 typedef boost::numeric::ublas::bounded_matrix<double,2,3> mat23;
00105 typedef boost::numeric::ublas::bounded_matrix<double,3,2> mat32;
00106 typedef boost::numeric::ublas::bounded_matrix<double,3,3> mat33;
00107 typedef boost::numeric::ublas::matrix_range<mat33> mat33_range;
00108 typedef boost::numeric::ublas::bounded_matrix<double,3,4> mat34;
00109 typedef boost::numeric::ublas::matrix_range<mat34> mat34_range;
00110 typedef boost::numeric::ublas::bounded_matrix<double,4,3> mat43;
00111 typedef boost::numeric::ublas::matrix_range<mat43> mat43_range;
00112 typedef boost::numeric::ublas::bounded_matrix<double,4,4> mat44;
00113 typedef boost::numeric::ublas::matrix_range<mat44> mat44_range;
00114 typedef boost::numeric::ublas::bounded_matrix<double,6,6> mat66;
00115 typedef boost::numeric::ublas::matrix_range<mat66> mat66_range;
00116 typedef boost::numeric::ublas::bounded_matrix<double,8,8> mat88;
00117 typedef boost::numeric::ublas::matrix_range<mat88> mat88_range;
00118 typedef boost::numeric::ublas::bounded_matrix<double,9,9> mat99;
00119 typedef boost::numeric::ublas::matrix_range<mat99> mat99_range;
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
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
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
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 }
00227
00229
00230
00231 #endif // JMATH_JBLAS_HPP