#include <klsupport.h>
|
| KLSupport (const Block_base &) |
|
void | swap (KLSupport &) |
|
const Block_base & | block () const |
|
size_t | rank () const |
|
size_t | size () const |
|
size_t | length (BlockElt z) const |
|
BlockElt | lengthLess (size_t l) const |
|
BlockElt | cross (size_t s, BlockElt z) const |
|
BlockEltPair | cayley (size_t s, BlockElt z) const |
|
DescentStatus::Value | descentValue (size_t s, BlockElt z) const |
|
const DescentStatus & | descent (BlockElt y) const |
|
const RankFlags & | descentSet (BlockElt z) const |
|
const RankFlags & | goodAscentSet (BlockElt z) const |
|
unsigned int | ascent_descent (BlockElt x, BlockElt y) const |
|
unsigned int | good_ascent_descent (BlockElt x, BlockElt y) const |
|
unsigned int | prim_index (BlockElt x, const RankFlags &descent_set) const |
|
unsigned int | self_index (BlockElt y) const |
|
void | filter_extremal (BitMap &, const RankFlags &) const |
| : Flags in b those block elements which are extremal w.r.t. the simple reflections in d. More...
|
|
void | filter_primitive (BitMap &, const RankFlags &) const |
|
void | fill () |
|
void | fillDownsets () |
| Fills in the |downset|, |primset|, |descents| and |goodAscent| bitmap/set vectors. Here |downset| and |primset| are vectors indexed by a simple reflection |s|, and giving a bitmap over all block elements, while |descents| and |goodAscent| are vectors indexed by a block element |z| and giving a bitset over all simple reflections. This difference is motivated by their use: |downset| and |primset| are used to filter bitmaps over the entire block according to some set of simple generators, which is easier if the data is grouped by generator. In fact the data computed is stored twice: one always has |downset[s].isMember(z) == descents[z].test(s)| and |primset[s].isMember(z) != good_ascent[z].test(s)|. More...
|
|
void | fillPrimitivize () |
|
Enumerator |
---|
PrimitivizeFilled |
|
DownsetsFilled |
|
LengthLessFilled |
|
Filled |
|
NumStates |
|
atlas::klsupport::KLSupport::KLSupport |
( |
const Block_base & |
b | ) |
|
unsigned int atlas::klsupport::KLSupport::ascent_descent |
( |
BlockElt |
x, |
|
|
BlockElt |
y |
|
) |
| const |
|
inline |
const Block_base& atlas::klsupport::KLSupport::block |
( |
| ) |
const |
|
inline |
const DescentStatus& atlas::klsupport::KLSupport::descent |
( |
BlockElt |
y | ) |
const |
|
inline |
DescentStatus::Value atlas::klsupport::KLSupport::descentValue |
( |
size_t |
s, |
|
|
BlockElt |
z |
|
) |
| const |
|
inline |
void atlas::klsupport::KLSupport::fill |
( |
| ) |
|
void atlas::klsupport::KLSupport::fillDownsets |
( |
| ) |
|
Fills in the |downset|, |primset|, |descents| and |goodAscent| bitmap/set vectors. Here |downset| and |primset| are vectors indexed by a simple reflection |s|, and giving a bitmap over all block elements, while |descents| and |goodAscent| are vectors indexed by a block element |z| and giving a bitset over all simple reflections. This difference is motivated by their use: |downset| and |primset| are used to filter bitmaps over the entire block according to some set of simple generators, which is easier if the data is grouped by generator. In fact the data computed is stored twice: one always has |downset[s].isMember(z) == descents[z].test(s)| and |primset[s].isMember(z) != good_ascent[z].test(s)|.
The predicate that |s| is a |descent| for |z| is taken in the weak sense that |s| belongs to the "tau-invariant" of |z|, in other words, it is a complex descent, real parity (type I or type II), or imaginary compact (the final case does not actually allow going down). The |goodAscent| bitset for |z| holds the non-decents for |z| that are not imaginary type II, so they are either complex ascent, imaginary type I or real nonparity. The |primset| bitmap for |s| records the block elements |z| for which |s| is not a |goodAscent|, in other words it is either a |descent| or imaginary type II.
void atlas::klsupport::KLSupport::fillPrimitivize |
( |
| ) |
|
void atlas::klsupport::KLSupport::filter_extremal |
( |
BitMap & |
b, |
|
|
const RankFlags & |
d |
|
) |
| const |
: Flags in b those block elements which are extremal w.r.t. the simple reflections in d.
Preconditions: the capacity of b is the size(); d contains rank() flags;
Explanation: an element z in the block is extremal w.r.t. d, if all the simple generators flagged in d are descents for z. Since d_downset[s] flags the elements for which s is a descent, this amounts to requesting that z belong to the intersection of the downsets for the various descents in d.
void atlas::klsupport::KLSupport::filter_primitive |
( |
BitMap & |
b, |
|
|
const RankFlags & |
d |
|
) |
| const |
unsigned int atlas::klsupport::KLSupport::good_ascent_descent |
( |
BlockElt |
x, |
|
|
BlockElt |
y |
|
) |
| const |
|
inline |
size_t atlas::klsupport::KLSupport::length |
( |
BlockElt |
z | ) |
const |
|
inline |
BlockElt atlas::klsupport::KLSupport::lengthLess |
( |
size_t |
l | ) |
const |
|
inline |
unsigned int atlas::klsupport::KLSupport::prim_index |
( |
BlockElt |
x, |
|
|
const RankFlags & |
descent_set |
|
) |
| const |
|
inline |
size_t atlas::klsupport::KLSupport::rank |
( |
| ) |
const |
|
inline |
unsigned int atlas::klsupport::KLSupport::self_index |
( |
BlockElt |
y | ) |
const |
|
inline |
size_t atlas::klsupport::KLSupport::size |
( |
| ) |
const |
|
inline |
void atlas::klsupport::KLSupport::swap |
( |
KLSupport & |
other | ) |
|
const Block_base& atlas::klsupport::KLSupport::d_block |
|
private |
std::vector<RankFlags> atlas::klsupport::KLSupport::d_descent |
|
private |
std::vector<BitMap> atlas::klsupport::KLSupport::d_downset |
|
private |
std::vector<RankFlags> atlas::klsupport::KLSupport::d_goodAscent |
|
private |
std::vector<BlockElt> atlas::klsupport::KLSupport::d_lengthLess |
|
private |
std::vector<std::vector<unsigned int> > atlas::klsupport::KLSupport::d_prim_index |
|
private |
std::vector<BitMap> atlas::klsupport::KLSupport::d_primset |
|
private |
BitSet<NumStates> atlas::klsupport::KLSupport::d_state |
|
private |
The documentation for this class was generated from the following files:
- /home/ran/atlas_project/latest_branch_07182016/sources/gkmod/klsupport.h
- /home/ran/atlas_project/latest_branch_07182016/sources/gkmod/klsupport.cpp