Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

atlas::subquotient::Subquotient< dim > Class Template Reference

Quotient of two subspaces of (Z/2Z)^d_rank. More...

#include <subquotient.h>

Collaboration diagram for atlas::subquotient::Subquotient< dim >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Subquotient ()
 Subquotient (size_t n)
 Subquotient (const bitvector::BitVectorList< dim > &bsp, const bitvector::BitVectorList< dim > &bsub, size_t n)
 constructs the subquotient where |bsp| generates the space, |bsub| the subspace.
 ~Subquotient ()
size_t dimension () const
 Dimension of the subquotient.
size_t rank () const
 Dimension of the ambient vector space in which the larger and smaller subspaces live.
const Subspace< dim > & space () const
const Subspace< dim > & subspace () const
const bitset::BitSet< dim > & support () const
unsigned long size () const
 Cardinality of the subquotient: 2^dimension.
void representative (bitvector::BitVector< dim > &r, const bitvector::BitVector< dim > &w) const
 Puts in |r| the canonical representative of |w| modulo |d_subspace|.
void mod_reduce (bitvector::BitVector< dim > &w) const
bitvector::BitVector< dim > mod_image (const bitvector::BitVector< dim > &w) const
bitset::BitSet< dim > significantBits () const
bitvector::BitVector< dim > toBasis (const bitvector::BitVector< dim > &v) const
 Expresses |v| in the subquotient basis.
bitvector::BitVector< dim > fromBasis (bitvector::BitVector< dim > v) const
 Interprets |v| in the subspace basis and returns external form.
void apply (const bitvector::BitMatrix< dim > &)
void swap (Subquotient &)

Private Attributes

Subspace< dim > d_space
Subspace< dim > d_subspace
bitset::BitSet< dim > d_rel_support
 Flags the row-reduced basis vectors for the (larger) |d_space| that span the canonical complement to the (smaller) |d_subspace|.

Detailed Description

template<size_t dim>
class atlas::subquotient::Subquotient< dim >

Quotient of two subspaces of (Z/2Z)^d_rank.

Elements of the vector space are BitVector's of capacity dim; the first d_rank coordinates are significant. (The number d_rank is owned by d_space and by d_subspace, not directly by Subquotient. The number is accessible by the public member function rank().) The larger subspace is specified by the Subspace d_space. The smaller subspace is specified by the Subspace d_subspace.

A consequence of (d_subspace contained in d_space) is that the collection of leading bits for d_subspace is a subset of the collection of leading bits for d_space. The difference of these two sets is flagged by the BitSet d_support. The number of set bets in d_support is therefore the dimension of the subquotient.

Definition at line 190 of file subquotient.h.


Constructor & Destructor Documentation

template<size_t dim>
atlas::subquotient::Subquotient< dim >::Subquotient  )  [inline]
 

Definition at line 232 of file subquotient.h.

template<size_t dim>
atlas::subquotient::Subquotient< dim >::Subquotient size_t  n  )  [inline, explicit]
 

Definition at line 234 of file subquotient.h.

template<size_t dim>
atlas::subquotient::Subquotient< dim >::Subquotient const bitvector::BitVectorList< dim > &  bsp,
const bitvector::BitVectorList< dim > &  bsub,
size_t  n
 

constructs the subquotient where |bsp| generates the space, |bsub| the subspace.

Constructs a subquotient of $(Z/2Z)^n$, formed by the space generated by |bsp| modulo the space generated by |bsub|

Definition at line 134 of file subquotient_def.h.

References atlas::subquotient::Subquotient< dim >::d_rel_support, atlas::subquotient::Subquotient< dim >::d_space, atlas::subquotient::Subquotient< dim >::d_subspace, and atlas::bitset::BitSet< n >::slice().

template<size_t dim>
atlas::subquotient::Subquotient< dim >::~Subquotient  )  [inline]
 

Definition at line 244 of file subquotient.h.


Member Function Documentation

template<size_t dim>
void atlas::subquotient::Subquotient< dim >::apply const bitvector::BitMatrix< dim > &  r  ) 
 

Synopsis: applies |r| to the data.

Definition at line 158 of file subquotient_def.h.

References atlas::subquotient::Subquotient< dim >::d_rel_support, atlas::subquotient::Subquotient< dim >::d_space, atlas::subquotient::Subquotient< dim >::d_subspace, and atlas::bitset::BitSet< n >::slice().

template<size_t dim>
size_t atlas::subquotient::Subquotient< dim >::dimension  )  const [inline]
 

Dimension of the subquotient.

Definition at line 253 of file subquotient.h.

Referenced by atlas::cartanclass::Fiber::adjointFiberRank(), atlas::cartanclass::Fiber::fiberRank(), atlas::cartanclass::Fiber::makeFiberMap(), atlas::cartanclass::Fiber::makeRealFormPartition(), atlas::tori::RealTorus::RealTorus(), and atlas::subquotient::subquotientMap().

template<size_t dim>
bitvector::BitVector<dim> atlas::subquotient::Subquotient< dim >::fromBasis bitvector::BitVector< dim >  v  )  const [inline]
 

Interprets |v| in the subspace basis and returns external form.

Definition at line 343 of file subquotient.h.

Referenced by atlas::kgb::KGBHelp::backtrack_seed(), and atlas::kgb::KGBHelp::naive_seed().

template<size_t dim>
bitvector::BitVector<dim> atlas::subquotient::Subquotient< dim >::mod_image const bitvector::BitVector< dim > &  w  )  const [inline]
 

Definition at line 304 of file subquotient.h.

template<size_t dim>
void atlas::subquotient::Subquotient< dim >::mod_reduce bitvector::BitVector< dim > &  w  )  const [inline]
 

Definition at line 300 of file subquotient.h.

template<size_t dim>
size_t atlas::subquotient::Subquotient< dim >::rank  )  const [inline]
 

Dimension of the ambient vector space in which the larger and smaller subspaces live.

Definition at line 261 of file subquotient.h.

Referenced by atlas::tori::dualPi0(), atlas::cartanclass::Fiber::makeAdjointFiberGroup(), and atlas::subquotient::subquotientMap().

template<size_t dim>
void atlas::subquotient::Subquotient< dim >::representative bitvector::BitVector< dim > &  r,
const bitvector::BitVector< dim > &  w
const [inline]
 

Puts in |r| the canonical representative of |w| modulo |d_subspace|.

Express the image of w in the subquotient using the image of the standard basis of the larger space. Then r is the corresponding combination of those standard basis vectors. It is assumed that w belongs to the larger space.

Definition at line 294 of file subquotient.h.

template<size_t dim>
bitset::BitSet<dim> atlas::subquotient::Subquotient< dim >::significantBits  )  const [inline]
 

Definition at line 308 of file subquotient.h.

template<size_t dim>
unsigned long atlas::subquotient::Subquotient< dim >::size  )  const [inline]
 

Cardinality of the subquotient: 2^dimension.

Definition at line 282 of file subquotient.h.

Referenced by atlas::cartanclass::Fiber::adjointFiberSize(), and atlas::cartanclass::Fiber::fiberSize().

template<size_t dim>
const Subspace<dim>& atlas::subquotient::Subquotient< dim >::space  )  const [inline]
 

Definition at line 265 of file subquotient.h.

Referenced by atlas::cartanclass::Fiber::gradingGroup(), atlas::cartanclass::Fiber::makeFiberMap(), atlas::tori::RealTorus::RealTorus(), and atlas::subquotient::subquotientMap().

template<size_t dim>
const Subspace<dim>& atlas::subquotient::Subquotient< dim >::subspace  )  const [inline]
 

Definition at line 269 of file subquotient.h.

template<size_t dim>
const bitset::BitSet<dim>& atlas::subquotient::Subquotient< dim >::support  )  const [inline]
 

Definition at line 275 of file subquotient.h.

Referenced by atlas::cartanclass::Fiber::makeFiberMap(), and atlas::subquotient::subquotientMap().

template<size_t dim>
void atlas::subquotient::Subquotient< dim >::swap Subquotient< dim > &   ) 
 

Definition at line 175 of file subquotient_def.h.

References atlas::subquotient::Subquotient< dim >::d_rel_support, atlas::subquotient::Subquotient< dim >::d_space, atlas::subquotient::Subquotient< dim >::d_subspace, and atlas::bitset::BitSet< n >::swap().

Referenced by atlas::tori::dualPi0(), and atlas::cartanclass::Fiber::swap().

template<size_t dim>
bitvector::BitVector<dim> atlas::subquotient::Subquotient< dim >::toBasis const bitvector::BitVector< dim > &  v  )  const [inline]
 

Expresses |v| in the subquotient basis.

It is assumed that |v| belongs to |d_space|.

We know that the subset of basis vectors of |d_space| selected by |d_rel_support| is independent modulo |d_subspace|, so if |v| is any linear combination of them, it suffices to extract and pack those coefficients. We can reduce to that situation by reducing |v| modulo |d_subspace|, which is what the call to |mod_image| below does; this will clear the bits for the support of |d_subspace|, while not taking us out of |d_space|.

Definition at line 325 of file subquotient.h.

Referenced by atlas::cartanclass::Fiber::adjointMAlphas(), atlas::cartanclass::Fiber::makeFiberMap(), atlas::cartanclass::Fiber::mAlpha(), atlas::cartanclass::Fiber::mAlphas(), and atlas::subquotient::subquotientMap().


Member Data Documentation

template<size_t dim>
bitset::BitSet<dim> atlas::subquotient::Subquotient< dim >::d_rel_support [private]
 

Flags the row-reduced basis vectors for the (larger) |d_space| that span the canonical complement to the (smaller) |d_subspace|.

The bits are set at the positions indexing the basis vectors whose leading bits do _not_ appear as leading bits of row-reduced basis vectors for the smaller space. The flagged set of basis vectors for |d_space| constitute a basis for a cross section of the subquotient in the larger space. In particular, the number of set bits is equal to the dimension of the subquotient.

Note that what is flagged is are numbers of basis vectors of the larger space, _not_ the positions of their leading bits in $(Z/2Z)^n$. Consequently the effective number of bits is |d_space.dimension()| rather than |rank()|, although this number is not recorded in the value |d_rel_support| itself.

Example: d_space=(1010,0110,0001) d_space.support={0,1,3} d_subspace=(0111) d_subspace.support={1} d_rel_support={0,2} (corresponding to the basis vectors 1010 and 0001 for d_space spanning the canonical complement to d_subspace).

Definition at line 227 of file subquotient.h.

Referenced by atlas::subquotient::Subquotient< dim >::apply(), atlas::subquotient::Subquotient< dim >::Subquotient(), and atlas::subquotient::Subquotient< dim >::swap().

template<size_t dim>
Subspace<dim> atlas::subquotient::Subquotient< dim >::d_space [private]
 

Larger space, expressed as a Subspace.

Definition at line 197 of file subquotient.h.

Referenced by atlas::subquotient::Subquotient< dim >::apply(), atlas::subquotient::Subquotient< dim >::Subquotient(), and atlas::subquotient::Subquotient< dim >::swap().

template<size_t dim>
Subspace<dim> atlas::subquotient::Subquotient< dim >::d_subspace [private]
 

Smaller space, expressed as a Subspace.

Definition at line 202 of file subquotient.h.

Referenced by atlas::subquotient::Subquotient< dim >::apply(), atlas::subquotient::Subquotient< dim >::Subquotient(), and atlas::subquotient::Subquotient< dim >::swap().


The documentation for this class was generated from the following files:
Generated on Wed Mar 26 16:53:06 2008 for atlas by  doxygen 1.3.9.1