atlas  0.6
Classes | Functions
atlas::permutations Namespace Reference

Classes

struct  Permutation
 

Functions

void compose (Permutation &a, const Permutation &b, unsigned long n)
 
int sign (const Permutation &pi)
 
template<typename T >
void permute_columns (matrix::Matrix_base< T > &M, const Permutation &pi)
 
template<typename U >
Permutation standardization (const std::vector< U > &a, size_t bound, std::vector< unsigned int > *stops)
 
template void permute_columns (matrix::Matrix_base< int > &M, const Permutation &pi)
 
template Permutation standardization (const std::vector< unsigned int > &a, size_t bound, std::vector< unsigned int > *stops)
 
template<typename T >
size_t find_index (const std::vector< T > &v, const T &x)
 
template<typename T >
void permute_rows (matrix::Matrix_base< T > &M, const Permutation &pi)
 

Function Documentation

void atlas::permutations::compose ( Permutation a,
const Permutation b,
unsigned long  n 
)

Synopsis: a *= b;

Precondition : a holds a permutation of [0,N[; b holds a permutation of [0,M[; M + n <= N;

Postcondition : a holds the permutation a_new of [0,N[ where a_new[i+n] = a[ b[i] + n ] for i in [0,M[; a is not changed outside the range [n,M+n[.

NOTE : although we know that the permutation can be done in place with the aid of just a bitmap, we do the lazy approach here and make a copy of the range involved.

template<typename T >
size_t atlas::permutations::find_index ( const std::vector< T > &  v,
const T &  x 
)
inline
template<typename T >
void atlas::permutations::permute_columns ( matrix::Matrix_base< T > &  M,
const Permutation pi 
)
template void atlas::permutations::permute_columns ( matrix::Matrix_base< int > &  M,
const Permutation pi 
)
template<typename T >
void atlas::permutations::permute_rows ( matrix::Matrix_base< T > &  M,
const Permutation pi 
)
int atlas::permutations::sign ( const Permutation pi)
template<typename U >
Permutation atlas::permutations::standardization ( const std::vector< U > &  a,
size_t  bound,
std::vector< unsigned int > *  stops 
)
template Permutation atlas::permutations::standardization ( const std::vector< unsigned int > &  a,
size_t  bound,
std::vector< unsigned int > *  stops 
)