|
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] |
1.7.5.1