inlib
1.2.0
|
Public Types | |
typedef std::vector< std::pair < unsigned int, unsigned int > > | cut_t |
typedef std::vector< unsigned int > | uints_t |
typedef std::vector< T >::iterator | vec_it_t |
typedef std::vector< T > ::const_iterator | cons_vec_it_t |
Public Member Functions | |
array () | |
array (const uints_t &a_orders) | |
array (unsigned int a_dimension, unsigned int a_order) | |
virtual | ~array () |
array (const array &a_from) | |
array & | operator= (const array &a_from) |
array & | operator*= (const T &a_T) |
bool | operator== (const array &a_array) const |
bool | operator!= (const array &a_array) const |
array | operator* (const T &a_T) const |
void | copy (const array &a_from) |
void | clear () |
bool | configure (const uints_t &a_orders) |
unsigned int | dimension () const |
const uints_t & | orders () const |
unsigned int | size () const |
bool | set_value (const uints_t &a_is, const T &a_value) |
bool | value (const uints_t &a_is, T &a_value) const |
void | reset () |
const std::vector< T > & | vector () const |
std::vector< T > & | vector () |
bool | fill (const std::vector< T > &a_values, cut_t *a_cut=0) |
bool | equal (const array &a_array) const |
bool | equal (const array &a_array, T aEpsilon) const |
bool | is_proportional (const array &a_array, T &a_factor) const |
bool | add (const array &a_array, cut_t *a_cut=0) |
bool | subtract (const array &a_array) |
bool | multiply (const array &a_array) |
bool | divide (const array &a_array) |
bool | contract (const array &a_array, T &a_value) const |
void | add (const T &a_T, cut_t *a_cut=0) |
void | multiply (const T &a_T) |
bool | divide (const T &a_T) |
bool | invert () |
bool | offset (const uints_t &a_is, unsigned int &a_offset) const |
bool | indices (unsigned int a_offset, uints_t &a_is) const |
bool | accept (unsigned int a_index, const cut_t &a_cut) const |
Static Public Member Functions | |
static T | zero () |
static T | one () |
static T | minus_one () |
static T | two () |
Protected Attributes | |
uints_t | m_orders |
uints_t | m_offsets |
std::vector< T > | m_vector |
uints_t | m_is |
typedef std::vector<T>::const_iterator inlib::array< T >::cons_vec_it_t |
typedef std::vector< std::pair<unsigned int,unsigned int> > inlib::array< T >::cut_t |
typedef std::vector<unsigned int> inlib::array< T >::uints_t |
typedef std::vector<T>::iterator inlib::array< T >::vec_it_t |
inlib::array< T >::array | ( | ) | [inline] |
inlib::array< T >::array | ( | const uints_t & | a_orders | ) | [inline] |
inlib::array< T >::array | ( | unsigned int | a_dimension, |
unsigned int | a_order | ||
) | [inline] |
virtual inlib::array< T >::~array | ( | ) | [inline, virtual] |
inlib::array< T >::array | ( | const array< T > & | a_from | ) | [inline] |
bool inlib::array< T >::accept | ( | unsigned int | a_index, |
const cut_t & | a_cut | ||
) | const [inline] |
Definition at line 320 of file array.
{ unsigned int dim = m_orders.size(); if(a_cut.size()!=dim) return false; if(!indices(a_index,const_cast<uints_t&>(m_is))) return false; bool good = true; for(unsigned iaxis=0;iaxis<dim;iaxis++) { if(m_is[iaxis]<a_cut[iaxis].first) {good = false;break;} if(m_is[iaxis]>a_cut[iaxis].second) {good = false;break;} } return good; }
bool inlib::array< T >::add | ( | const array< T > & | a_array, |
cut_t * | a_cut = 0 |
||
) | [inline] |
void inlib::array< T >::add | ( | const T & | a_T, |
cut_t * | a_cut = 0 |
||
) | [inline] |
void inlib::array< T >::clear | ( | ) | [inline] |
bool inlib::array< T >::configure | ( | const uints_t & | a_orders | ) | [inline] |
Definition at line 110 of file array.
{ m_orders = a_orders; unsigned int dim = m_orders.size(); if(dim==0) { clear(); return false; } unsigned int size = 1; for(unsigned int index=0;index<dim;index++) { //if(m_orders[index]<0) { //clear(); //return false; //} size *= m_orders[index]; } m_vector.resize(size,zero()); m_offsets.resize(dim,0); m_offsets[0] = 1; for(unsigned int iaxis=1;iaxis<dim;iaxis++) m_offsets[iaxis] = m_offsets[iaxis-1] * m_orders[iaxis-1]; m_is.resize(dim,0); return true; }
bool inlib::array< T >::contract | ( | const array< T > & | a_array, |
T & | a_value | ||
) | const [inline] |
Definition at line 256 of file array.
{ a_value = zero(); if(m_orders!=a_array.m_orders) return false; cons_vec_it_t it = m_vector.begin(); cons_vec_it_t ait = a_array.m_vector.begin(); for(;it!=m_vector.end();++it,++ait) a_value += (*it) * (*ait); return true; }
void inlib::array< T >::copy | ( | const array< T > & | a_from | ) | [inline] |
unsigned int inlib::array< T >::dimension | ( | ) | const [inline] |
bool inlib::array< T >::divide | ( | const array< T > & | a_array | ) | [inline] |
Definition at line 241 of file array.
{ if(m_orders!=a_array.m_orders) return false; bool status = true; vec_it_t it = m_vector.begin(); cons_vec_it_t ait = a_array.m_vector.begin(); for(;it!=m_vector.end();++it,++ait) { if((*ait)==zero()) { (*it) = zero(); //PAW convention. status = false; } else { (*it) /= (*ait); } } return status; }
bool inlib::array< T >::divide | ( | const T & | a_T | ) | [inline] |
bool inlib::array< T >::equal | ( | const array< T > & | a_array | ) | const [inline] |
Definition at line 170 of file array.
{ if(m_orders!=a_array.m_orders) return false; cons_vec_it_t it = m_vector.begin(); cons_vec_it_t ait = a_array.m_vector.begin(); for(;it!=m_vector.end();++it,++ait) { if((*it)!=(*ait)) return false; } return true; }
bool inlib::array< T >::equal | ( | const array< T > & | a_array, |
T | aEpsilon | ||
) | const [inline] |
Definition at line 179 of file array.
{ if(m_orders!=a_array.m_orders) return false; cons_vec_it_t it = m_vector.begin(); cons_vec_it_t ait = a_array.m_vector.begin(); for(;it!=m_vector.end();++it,++ait) { T diff = (*it) - (*ait); if(diff<0) diff *= -1; if(diff>=aEpsilon) return false; } return true; }
bool inlib::array< T >::fill | ( | const std::vector< T > & | a_values, |
cut_t * | a_cut = 0 |
||
) | [inline] |
Definition at line 156 of file array.
{ unsigned int dsize = a_values.size(); unsigned di = 0; unsigned int index = 0; for(vec_it_t it=m_vector.begin();it!=m_vector.end();++it,index++) { if(!a_cut || (a_cut && accept(index,*a_cut)) ) { if(di>=dsize) return false; //a_values exhausted too early *it = a_values[di]; di++; } } return true; }
bool inlib::array< T >::indices | ( | unsigned int | a_offset, |
uints_t & | a_is | ||
) | const [inline] |
bool inlib::array< T >::invert | ( | ) | [inline] |
bool inlib::array< T >::is_proportional | ( | const array< T > & | a_array, |
T & | a_factor | ||
) | const [inline] |
Definition at line 190 of file array.
{ // If true, then : a_array = a_factor * this. a_factor = zero(); if(m_orders!=a_array.m_orders) return false; bool first = true; cons_vec_it_t it = m_vector.begin(); cons_vec_it_t ait = a_array.m_vector.begin(); for(;it!=m_vector.end();++it,++ait) { if( ((*it)==zero()) && ((*ait)==zero())) { continue; } else if( ((*it)!=zero()) && ((*ait)==zero())) { return false; } else if( ((*it)==zero()) && ((*ait)!=zero())) { return false; } else { if(first) { a_factor = (*ait)/(*it); first = false; } else { if((*ait)!=(*it)*a_factor) return false; } } } return true; }
static T inlib::array< T >::minus_one | ( | ) | [inline, static] |
bool inlib::array< T >::multiply | ( | const array< T > & | a_array | ) | [inline] |
void inlib::array< T >::multiply | ( | const T & | a_T | ) | [inline] |
bool inlib::array< T >::offset | ( | const uints_t & | a_is, |
unsigned int & | a_offset | ||
) | const [inline] |
static T inlib::array< T >::one | ( | ) | [inline, static] |
bool inlib::array< T >::operator!= | ( | const array< T > & | a_array | ) | const [inline] |
Definition at line 79 of file array.
{ return !operator==(a_array); }
array inlib::array< T >::operator* | ( | const T & | a_T | ) | const [inline] |
array& inlib::array< T >::operator*= | ( | const T & | a_T | ) | [inline] |
array& inlib::array< T >::operator= | ( | const array< T > & | a_from | ) | [inline] |
bool inlib::array< T >::operator== | ( | const array< T > & | a_array | ) | const [inline] |
const uints_t& inlib::array< T >::orders | ( | ) | const [inline] |
void inlib::array< T >::reset | ( | ) | [inline] |
bool inlib::array< T >::set_value | ( | const uints_t & | a_is, |
const T & | a_value | ||
) | [inline] |
unsigned int inlib::array< T >::size | ( | ) | const [inline] |
bool inlib::array< T >::subtract | ( | const array< T > & | a_array | ) | [inline] |
static T inlib::array< T >::two | ( | ) | [inline, static] |
bool inlib::array< T >::value | ( | const uints_t & | a_is, |
T & | a_value | ||
) | const [inline] |
const std::vector<T>& inlib::array< T >::vector | ( | ) | const [inline] |
std::vector<T>& inlib::array< T >::vector | ( | ) | [inline] |
static T inlib::array< T >::zero | ( | ) | [inline, static] |
uints_t inlib::array< T >::m_is [protected] |
uints_t inlib::array< T >::m_offsets [protected] |
uints_t inlib::array< T >::m_orders [protected] |
std::vector<T> inlib::array< T >::m_vector [protected] |