Go to the documentation of this file.00001
00014 #ifndef INDIRECTARRAY_HPP_
00015 #define INDIRECTARRAY_HPP_
00016
00017 #include <iostream>
00018
00019 #include "boost/numeric/ublas/operation.hpp"
00020 #include "boost/numeric/ublas/io.hpp"
00021
00022 #include "jmath/jblas.hpp"
00023
00024 namespace std {
00028 template<class A>
00029 ostream& operator <<(ostream & s, const boost::numeric::ublas::indirect_array<A> & ia_) {
00030 s << "[" << ia_.size() << "]{";
00031 for (size_t i = 0; i < ia_.size(); i++) {
00032 s << ia_(i);
00033 if (i + 1 < ia_.size())
00034 s << ",";
00035 }
00036 s << "}";
00037 return s;
00038 }
00039 }
00040
00041 namespace jafar {
00042 namespace jmath {
00043 namespace ublasExtra {
00044
00052 jblas::ind_array ia_set(const jblas::vecb & vb);
00053
00061 jblas::ind_array ia_set(const jblas::veci & vi);
00062
00068 jblas::ind_array ia_set(const ublas::range & r);
00069
00077 jblas::ind_array ia_set(size_t begin, size_t end);
00078
00084 jblas::ind_array ia_set(const ublas::slice & s);
00085
00092 jblas::ind_array ia_complement(const jblas::ind_array & ifull, const jblas::ind_array & ipartial);
00093
00100 jblas::ind_array ia_union(const jblas::ind_array & ia1, const jblas::ind_array & ia2);
00101
00108 jblas::ind_array ia_concat(const jblas::ind_array & ia1, const jblas::ind_array & ia2);
00109
00116 jblas::ind_array ia_head(const jblas::ind_array & ia, const size_t N);
00117
00126 jblas::ind_array ia_head(const jblas::vecb & vb, const size_t N);
00127
00136 jblas::ind_array ia_popfront(jblas::vecb & vb, const size_t N);
00137
00146 jblas::ind_array ia_pushfront(jblas::vecb & vb, const size_t N);
00147
00151 jblas::ind_array operator+(const jblas::ind_array &ia, int n);
00152 inline jblas::ind_array operator-(const jblas::ind_array &ia, int n) { return ia+(-n); }
00153
00154 }
00155 }
00156 }
00157
00158 #endif