TiledArray::symmetry Namespace Reference

Namespaces

 detail
 

Classes

class  Permutation
 Permutation of a sequence of objects indexed by base-0 indices. More...
 
class  PermutationGroup
 Permutation group. More...
 
class  Representation
 
class  SymmetricGroup
 Symmetric group. More...
 

Functions

bool operator== (const Permutation &p1, const Permutation &p2)
 Permutation equality operator. More...
 
bool operator!= (const Permutation &p1, const Permutation &p2)
 Permutation inequality operator. More...
 
bool operator< (const Permutation &p1, const Permutation &p2)
 Permutation less-than operator. More...
 
std::ostream & operator<< (std::ostream &output, const Permutation &p)
 Add permutation to an output stream. More...
 
Permutation operator- (const Permutation &perm)
 Inverse permutation operator. More...
 
Permutation operator* (const Permutation &p1, const Permutation &p2)
 Permutation multiplication operator. More...
 
Permutationoperator*= (Permutation &p1, const Permutation &p2)
 return *this ^ other More...
 
Permutation operator^ (const Permutation &perm, int n)
 Raise perm to the n-th power. More...
 
template<typename T , std::size_t N>
std::array< T, N > operator* (const Permutation &perm, const std::array< T, N > &a)
 Permute a std::array. More...
 
template<typename T , std::size_t N>
std::array< T, N > & operator*= (std::array< T, N > &a, const Permutation &perm)
 In-place permute a std::array. More...
 
template<typename T , typename A >
std::vector< T > operator* (const Permutation &perm, const std::vector< T, A > &v)
 permute a std::vector<T> More...
 
template<typename T , typename A >
std::vector< T, A > & operator*= (std::vector< T, A > &v, const Permutation &perm)
 In-place permute a std::array. More...
 
template<typename T , std::size_t N>
boost::container::small_vector< T, N > operator* (const Permutation &perm, const boost::container::small_vector< T, N > &v)
 permute a boost::container::small_vector<T> More...
 
template<typename T , std::size_t N>
boost::container::small_vector< T, N > & operator*= (boost::container::small_vector< T, N > &v, const Permutation &perm)
 In-place permute a boost::container::small_vector. More...
 
bool operator== (const PermutationGroup &p1, const PermutationGroup &p2)
 PermutationGroup equality operator. More...
 
bool operator!= (const PermutationGroup &p1, const PermutationGroup &p2)
 PermutationGroup inequality operator. More...
 
bool operator< (const PermutationGroup &p1, const PermutationGroup &p2)
 PermutationGroup less-than operator. More...
 
std::ostream & operator<< (std::ostream &output, const PermutationGroup &p)
 Add permutation group to an output stream. More...
 
template<typename MultiIndex >
bool is_lexicographically_smallest (const MultiIndex &idx, const PermutationGroup &pg)
 
PermutationGroup conjugate (const PermutationGroup &G, const PermutationGroup::Permutation &h)
 Computes conjugate permutation group obtained by the action of a permutation. More...
 
PermutationGroup intersect (const PermutationGroup &G1, const PermutationGroup &G2)
 
template<typename Set >
PermutationGroup stabilizer (const PermutationGroup &G, const Set &f)
 
template<typename T >
identity ()
 identity for group of objects of type T More...
 

Function Documentation

◆ identity()

template<typename T >
T TiledArray::symmetry::identity ( )

identity for group of objects of type T

Here is the caller graph for this function:

◆ operator!=()

bool TiledArray::symmetry::operator!= ( const Permutation p1,
const Permutation p2 
)
inline

Permutation inequality operator.

Parameters
p1The left-hand permutation to be compared
p2The right-hand permutation to be compared
Returns
true if any element of p1 is not equal to that of p2, otherwise false.

Definition at line 460 of file permutation.h.

Here is the call graph for this function:

◆ operator*() [1/4]

Permutation TiledArray::symmetry::operator* ( const Permutation p1,
const Permutation p2 
)
inline

Permutation multiplication operator.

Parameters
p1The left-hand permutation
p2The right-hand permutation
Returns
The product of p1 and p2 (which is the permutation of p2 by p1).

Definition at line 500 of file permutation.h.

Here is the call graph for this function:

◆ operator*() [2/4]

template<typename T , std::size_t N>
boost::container::small_vector<T, N> TiledArray::symmetry::operator* ( const Permutation perm,
const boost::container::small_vector< T, N > &  v 
)
inline

permute a boost::container::small_vector<T>

Template Parameters
TThe element type of the vector
NThe max static size of the vector
Parameters
permThe permutation
vThe vector to be permuted
Returns
A permuted copy of v
Exceptions
TiledArray::ExceptionWhen the dimension of the permutation is not equal to the size of v.

Definition at line 630 of file permutation.h.

Here is the call graph for this function:

◆ operator*() [3/4]

template<typename T , std::size_t N>
std::array<T, N> TiledArray::symmetry::operator* ( const Permutation perm,
const std::array< T, N > &  a 
)
inline

Permute a std::array.

Template Parameters
TThe element type of the array
NThe size of the array
Parameters
permThe permutation
aThe array to be permuted
Returns
A permuted copy of a
Exceptions
TiledArray::ExceptionWhen the dimension of the permutation is not equal to the size of a.

Definition at line 562 of file permutation.h.

Here is the call graph for this function:

◆ operator*() [4/4]

template<typename T , typename A >
std::vector<T> TiledArray::symmetry::operator* ( const Permutation perm,
const std::vector< T, A > &  v 
)
inline

permute a std::vector<T>

Template Parameters
TThe element type of the vector
AThe allocator type of the vector
Parameters
permThe permutation
vThe vector to be permuted
Returns
A permuted copy of v
Exceptions
TiledArray::ExceptionWhen the dimension of the permutation is not equal to the size of v.

Definition at line 596 of file permutation.h.

Here is the call graph for this function:

◆ operator*=() [1/4]

template<typename T , std::size_t N>
boost::container::small_vector<T, N>& TiledArray::symmetry::operator*= ( boost::container::small_vector< T, N > &  v,
const Permutation perm 
)
inline

In-place permute a boost::container::small_vector.

Template Parameters
TThe element type of the vector
NThe max static size of the vector
Parameters
[out]vThe vector to be permuted
[in]permThe permutation
Returns
A reference to v
Exceptions
TiledArray::ExceptionWhen the dimension of the permutation is not equal to the size of v.

Definition at line 647 of file permutation.h.

Here is the call graph for this function:

◆ operator*=() [2/4]

Permutation& TiledArray::symmetry::operator*= ( Permutation p1,
const Permutation p2 
)
inline

return *this ^ other

Definition at line 505 of file permutation.h.

◆ operator*=() [3/4]

template<typename T , std::size_t N>
std::array<T, N>& TiledArray::symmetry::operator*= ( std::array< T, N > &  a,
const Permutation perm 
)
inline

In-place permute a std::array.

Template Parameters
TThe element type of the array
NThe size of the array
Parameters
[out]aThe array to be permuted
[in]permThe permutation
Returns
A reference to a
Exceptions
TiledArray::ExceptionWhen the dimension of the permutation is not equal to the size of a.

Definition at line 579 of file permutation.h.

Here is the call graph for this function:

◆ operator*=() [4/4]

template<typename T , typename A >
std::vector<T, A>& TiledArray::symmetry::operator*= ( std::vector< T, A > &  v,
const Permutation perm 
)
inline

In-place permute a std::array.

Template Parameters
TThe element type of the vector
AThe allocator type of the vector
Parameters
[out]vThe vector to be permuted
[in]permThe permutation
Returns
A reference to v
Exceptions
TiledArray::ExceptionWhen the dimension of the permutation is not equal to the size of v.

Definition at line 613 of file permutation.h.

Here is the call graph for this function:

◆ operator-()

Permutation TiledArray::symmetry::operator- ( const Permutation perm)
inline

Inverse permutation operator.

Parameters
permThe permutation to be inverted
Returns
perm.inverse()

Definition at line 492 of file permutation.h.

Here is the call graph for this function:

◆ operator<()

bool TiledArray::symmetry::operator< ( const Permutation p1,
const Permutation p2 
)
inline

Permutation less-than operator.

Parameters
p1The left-hand permutation to be compared
p2The right-hand permutation to be compared
Returns
true if the elements of p1 are lexicographically less than that of p2, otherwise false.

Definition at line 470 of file permutation.h.

Here is the call graph for this function:

◆ operator<<()

std::ostream& TiledArray::symmetry::operator<< ( std::ostream &  output,
const Permutation p 
)
inline

Add permutation to an output stream.

Parameters
[out]outputThe output stream
[in]pThe permutation to be added to the output stream
Returns
The output stream

Definition at line 481 of file permutation.h.

Here is the call graph for this function:

◆ operator==()

bool TiledArray::symmetry::operator== ( const Permutation p1,
const Permutation p2 
)
inline

Permutation equality operator.

Parameters
p1The left-hand permutation to be compared
p2The right-hand permutation to be compared
Returns
true if all elements of p1 and p2 are equal and in the same order, otherwise false.

Definition at line 450 of file permutation.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator^()

Permutation TiledArray::symmetry::operator^ ( const Permutation perm,
int  n 
)
inline

Raise perm to the n-th power.

Constructs the permutation $ P^n $, where $ P $ is the permutation perm.

Parameters
permThe base permutation
nExponent value
Returns
This permutation raised to the n-th power

Definition at line 516 of file permutation.h.

Here is the call graph for this function: