 |
Cadabra
Computer algebra system for field theory problems
|
Go to the documentation of this file.
52 virtual unsigned int row_size(
unsigned int row)
const=0;
53 virtual unsigned int column_size(
unsigned int col)
const;
54 virtual void add_box(
unsigned int row)=0;
57 virtual void clear()=0;
62 unsigned long hook_length(
unsigned int row,
unsigned int col)
const;
70 virtual unsigned int row_size(
unsigned int row)
const;
71 virtual void add_box(
unsigned int row);
90 virtual unsigned int row_size(
unsigned int row)
const;
91 virtual void add_box(
unsigned int row);
93 std::pair<int, int>
find(
const T&)
const;
98 T&
operator()(
unsigned int row,
unsigned int col);
99 const T&
operator()(
unsigned int row,
unsigned int col)
const;
100 const T&
operator[](
unsigned int boxnum)
const;
101 void add_box(
unsigned int rownum, T val);
112 template<
class StrictWeakOrdering>
void sort_columns(StrictWeakOrdering comp);
113 template<
class StrictWeakOrdering>
void canonicalise(StrictWeakOrdering comp,
bool only_col_ex=
false);
335 template<
class OutputIterator>
336 OutputIterator
Garnir_set(OutputIterator,
unsigned int,
unsigned int)
const;
346 yngint_t total_dimension(
unsigned int dim);
347 void remove_nullifying_traces();
350 bool standard_form();
351 void add_tableau(
const T&);
352 void symmetrise(
const T& tabsym);
362 bool legal_box(
const std::vector<std::pair<int,int> >& prev,
363 const std::vector<std::pair<int,int> >& ths,
364 int colpos,
int trypos);
378 typename tableau_container_t::iterator it=storage.begin();
379 while(it!=storage.end()) {
380 if(it->has_nullifying_trace())
381 it=storage.erase(it);
460 for(
unsigned int ir=0; ir<
rows.size(); ++ir) {
461 for(
unsigned int ic=0; ic<
rows[ir].size(); ++ic) {
462 if(
rows[ir][ic]==obj)
463 return std::pair<int,int>(ir, ic);
466 return std::pair<int,int>(-1,-1);
491 template<
class StrictWeakOrdering>
496 for(
unsigned int c=0; c<
row_size(0); ++c) {
503 template<
class StrictWeakOrdering>
506 for(
unsigned int c1=0; c1<
row_size(0); ++c1) {
507 for(
unsigned int c2=c1; c2<
row_size(0); ++c2) {
509 if(comp((*
this)(0,c2), (*
this)(0,c1)))
517 template<
class StrictWeakOrdering>
559 return (*tab)(row_number + n, column_number);
565 return (*tab)(row_number,column_number);
571 return &((*tab)(row_number,column_number));
657 return !((*this)==other);
665 : tab(t), column_number(c), row_number(r)
671 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
700 return (*tab)(row_number, column_number);
706 return &((*tab)(row_number, column_number));
764 if (row_number <= other.
row_number)
return true;
771 if (row_number >= other.
row_number)
return true;
778 if (row_number < other.
row_number)
return true;
785 if (row_number > other.
row_number)
return true;
792 return !((*this) == other);
801 : tab(t), column_number(c), row_number(r)
830 return (*tab)(row_number, column_number);
836 return &((*tab)(row_number, column_number));
922 return !((*this) == other);
930 : tab(t), column_number(c), row_number(r)
936 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
966 return (*tab)(row_number, column_number);
972 return &((*tab)(row_number, column_number));
1058 return !((*this) == other);
1068 : tab(t), column_number(c), row_number(r)
1097 return (*tab)(row_number,column_number);
1103 return &((*tab)(row_number,column_number));
1109 if(++column_number==tab->rows[row_number].size()) {
1120 if(++column_number==tab->rows[row_number]) {
1132 if(column_number==0) {
1134 column_number=tab->rows[row_number].size()-1;
1136 else --column_number;
1144 if(column_number==0) {
1146 column_number=tab->rows[row_number].size()-1;
1148 else --column_number;
1157 if(++column_number==tab->rows[row_number]) {
1170 if(column_number==0) {
1172 column_number=tab->rows[row_number].size()-1;
1174 else --column_number;
1205 return !((*this)==other);
1215 : tab(t), column_number(c), row_number(r)
1221 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
1250 return (*tab)(row_number, column_number);
1256 return &((*tab)(row_number, column_number));
1262 if (++column_number == tab->rows[row_number].size()) {
1273 if (++column_number == tab->rows[row_number]) {
1285 if (column_number == 0) {
1287 column_number = tab->rows[row_number].size() - 1;
1289 else --column_number;
1297 if (column_number == 0) {
1299 column_number = tab->rows[row_number].size() - 1;
1301 else --column_number;
1309 while (this->n > 0) {
1310 if (++column_number == tab->rows[row_number]) {
1323 if (column_number == 0) {
1325 column_number = tab->rows[row_number].size() - 1;
1327 else --column_number;
1344 if (row_number < other.
row_number)
return true;
1351 if (row_number > other.
row_number)
return true;
1358 return !((*this) == other);
1368 return iterator(0, 0,
this);
1374 return iterator(
rows.size(), 0,
this);
1381 return const_iterator(0,0,
this);
1387 return const_iterator(
rows.size(), 0,
this);
1461 return in_row_iterator{ row, 0,
this };
1467 return in_row_iterator{ row,
row_size(row),
this };
1473 return in_row_const_iterator{ row, 0,
this };
1479 return in_row_const_iterator{ row,
row_size(row),
this };
1498 template<
class OutputIterator>
1502 unsigned int r=row, c=col;
1529 for(
unsigned int c=0; c<
row_size(r)-1; ++c) {
1530 if((*
this)(r,c) > (*
this)(r,c+1) )
1531 return std::pair<int, int>(r,c);
1535 return std::pair<int,int>(-1,-1);
1541 bool already_standard=
true;
1543 typename tableau_container_t::iterator thetab=storage.begin();
1544 while(thetab!=storage.end()) {
1545 (*thetab).sort_within_columns();
1546 std::pair<int,int> where=(*thetab).nonstandard_loc();
1547 if(where.first!=-1) {
1548 already_standard=
false;
1550 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1)
1551 com.
original.push_back((*thetab)(i1,where.second));
1552 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1)
1553 com.
original.push_back((*thetab)(i1,where.second+1));
1554 com.
sublengths.push_back((*thetab).column_size(where.second)-where.first);
1557 for(
unsigned int tabi=1; tabi<com.
size(); ++tabi) {
1559 unsigned int offset=0;
1560 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1, ++offset)
1561 ntab(i1,where.second)=com[tabi][offset];
1562 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1, ++offset)
1563 ntab(i1,where.second+1)=com[tabi][offset];
1564 ntab.multiplicity*=-1*com.
ordersign(tabi);
1567 thetab=storage.erase(thetab);
1571 return already_standard;
1577 typename tableau_container_t::iterator it=storage.begin();
1578 while(it!=storage.end()) {
1579 if((*it).compare_without_multiplicity(ntab)) {
1580 (*it).multiplicity+=ntab.multiplicity;
1581 if((*it).multiplicity==0)
1587 storage.push_back(ntab);
1603 for(
unsigned int c=0; c<
row_size(r); ++c)
1606 unsigned int offset=0;
1613 for(
unsigned int c=0; c<
row_size(r); ++c)
1619 if(modulo_monoterm) {
1621 for(
unsigned int c=0; c<
row_size(0); ++c)
1623 for(
unsigned int i=0; i<sym.
size(); ++i)
1628 for(
unsigned int c=0; c<
row_size(0); ++c) {
1647 for(
unsigned int c=0; c<
row_size(r); ++c)
1650 unsigned int offset=0;
1657 for(
unsigned int c=0; c<
row_size(r); ++c)
1663 for(
unsigned int c=0; c<
row_size(0); ++c) {
1731 typename tableau_container_t::const_iterator it=storage.begin();
1732 while(it!=storage.end()) {
1733 totdim+=(*it).dimension(dim);
1739 template<
class T,
class OutputIterator>
1741 OutputIterator out,
bool alltabs=
false)
1744 while(it!=tabs1.
storage.end()) {
1745 LR_tensor((*it), tab2, maxrows, out, alltabs);
1750 template<
class T1,
class T2>
1752 const T2& tab2,
unsigned int row2,
unsigned int col2)
1754 tab1.add_box(row1, tab2(row2,col2));
1759 const tableau&,
unsigned int,
unsigned int)
1766 template<
class Tab,
class OutputIterator>
1768 unsigned int currow2,
unsigned int curcol2,
unsigned int startrow,
1769 unsigned int maxrows,
1770 OutputIterator outit,
1775 if((++curcol2)==tab2.row_size(currow2)) {
1777 if((++currow2)==tab2.number_of_rows()) {
1786 for(
unsigned int rowpos=startrow; rowpos<std::min(newtab.number_of_rows()+1,maxrows); ++rowpos) {
1788 if(rowpos>0 && rowpos<newtab.number_of_rows())
1789 if(newtab.row_size(rowpos-1)==newtab.row_size(rowpos))
1793 unsigned int colpos=(rowpos==newtab.number_of_rows())?0:newtab.row_size(rowpos);
1796 for(
unsigned int rr=0; rr<rowpos; ++rr)
1797 if(Ycurrent(rr,colpos).first==(int)(currow2))
1802 for(
unsigned int cc=0; cc<colpos; ++cc)
1803 if(Ycurrent(rowpos,cc).second==(int)(curcol2))
1807 if(!alltabs && currow2>0) {
1808 int numi=0, numimin1=0;
1810 for(
unsigned int sr=0; sr<rowpos; ++sr)
1811 for(
unsigned int sc=0; sc<Ycurrent.
row_size(sr); ++sc) {
1813 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1814 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1823 for(
int sc=Ycurrent.
row_size(sr)-1; sc>=0; --sc) {
1824 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1825 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1833 Ycurrent.
add_box(rowpos, std::pair<int,int>(currow2, curcol2));
1834 add_box(newtab, rowpos, tab2, currow2, curcol2);
1835 LR_add_box(tab2, newtab, currow2, curcol2, alltabs?0:rowpos, maxrows,
1836 outit, Ycurrent, alltabs);
1839 newtab.remove_box(rowpos);
1847 template<
class Tab,
class OutputIterator>
1848 void LR_tensor(
const Tab& tab1,
const Tab& tab2,
unsigned int maxrows,
1849 OutputIterator outit,
bool alltabs=
false)
1862 while(yi!=Ycurrent.
end()) {
1863 (*yi)=std::pair<int,int>(-2,-2);
1867 LR_add_box(tab2, newtab, 0, -1, 0, maxrows, outit, Ycurrent, alltabs);
1870 template<
class T,
class OutputIterator>
1878 std::ostream&
operator<<(std::ostream&,
const tableau& );
1881 std::ostream&
operator<<(std::ostream&,
const tableaux<T>& );
1884 std::ostream&
operator<<(std::ostream&,
const filled_tableau<T>& );
1895 assert(num<
rows.size());
1896 return rows[num].size();
1902 assert(row<
rows.size());
1903 assert(col<
rows[row].size());
1904 return rows[row][col];
1910 assert(row<
rows.size());
1911 assert(col<
rows[row].size());
1912 return rows[row][col];
1918 unsigned int row = 0;
1925 return rows[row][boxnum];
1936 if(rownum>=
rows.size())
1937 rows.resize(rownum+1);
1938 assert(rownum<
rows.size());
1939 rows[rownum].push_back(T());
1945 if(rownum>=
rows.size())
1946 rows.resize(rownum+1);
1947 assert(rownum<
rows.size());
1948 rows[rownum].push_back(val);
1957 T tmp=(*this)(r,c1);
1958 (*this)(r,c1)=(*
this)(r,c2);
1966 assert(rownum<
rows.size());
1967 assert(
rows[rownum].size()>0);
1968 rows[rownum].pop_back();
1969 if(
rows[rownum].size()==0)
1984 while(it!=tabs.
storage.end()) {
1985 str << (*it) << std::endl << std::endl;
1995 for(
unsigned int j=0; j<tab.
row_size(i); ++j) {
int permutation_sign
Definition: Combinatorics.hh:163
const T & operator[](unsigned int boxnum) const
Definition: YoungTab.hh:1916
in_column_iterator end_column(unsigned int column_number)
Definition: YoungTab.hh:1412
T value_type
Definition: YoungTab.hh:86
const T & operator*() const
Definition: YoungTab.hh:1248
in_row_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:800
filled_tableau< T > * tab
Definition: YoungTab.hh:285
An iterator over all boxes of a tableau, left to right, top to bottom.
Definition: YoungTab.hh:263
Generic Young tableaux routines.
Definition: YoungTab.cc:24
void copy_shape(const tableau &)
Definition: YoungTab.hh:412
bool operator>=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1035
in_row_const_iterator & operator++()
Definition: YoungTab.hh:976
T & operator*() const
Definition: YoungTab.hh:1095
bool legal_box(const std::vector< std::pair< int, int > > &prev, const std::vector< std::pair< int, int > > &ths, int colpos, int trypos)
unsigned int column_number
Definition: YoungTab.hh:231
Definition: YoungTab.hh:289
in_row_iterator begin_row(unsigned int row_number)
Definition: YoungTab.hh:1459
iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1117
ptrdiff_t difference_type
Definition: YoungTab.hh:126
in_row_const_iterator operator+(unsigned int)
Definition: YoungTab.hh:942
T * operator->() const
Definition: YoungTab.hh:569
Definition: YoungTab.hh:81
in_column_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:612
in_column_const_iterator operator-(unsigned int)
Definition: YoungTab.hh:684
virtual unsigned int row_size(unsigned int row) const
Definition: YoungTab.cc:115
virtual unsigned int column_size(unsigned int col) const
Definition: YoungTab.cc:61
void add_tableau(const T &)
Definition: YoungTab.hh:1575
in_row_const_iterator operator-(unsigned int)
Definition: YoungTab.hh:950
in_row_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1013
bool operator<(const in_column_iterator &other) const
Definition: YoungTab.hh:641
const filled_tableau< T > * tab
Definition: YoungTab.hh:258
const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1320
iterator operator-(unsigned int)
Definition: YoungTab.hh:1081
bool operator>=(const in_row_iterator &other) const
Definition: YoungTab.hh:899
in_row_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:877
bool operator>(const in_column_const_iterator &other) const
Definition: YoungTab.hh:783
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:137
void set_multiplicity(unsigned int pos, int val)
Definition: Combinatorics.hh:1003
yngint_t hook_length_prod() const
Definition: YoungTab.cc:82
bool operator<=(const in_column_iterator &other) const
Definition: YoungTab.hh:627
virtual void add_row(unsigned int row_size)
Definition: YoungTab.cc:39
in_row_iterator operator+(unsigned int)
Definition: YoungTab.hh:806
unsigned int size() const
Definition: Combinatorics.hh:429
bool compare_without_multiplicity(const filled_tableau< T > &other) const
Definition: YoungTab.hh:422
std::list< T > tableau_container_t
Definition: YoungTab.hh:354
unsigned int column_number
Definition: YoungTab.hh:259
in_row_const_iterator cend_row(unsigned int row_number) const
Definition: YoungTab.hh:1477
yngrat_t multiplicity
Definition: YoungTab.hh:59
std::vector< unsigned int > sublengths
Definition: Combinatorics.hh:74
const_iterator cbegin() const
Definition: YoungTab.hh:1379
std::vector< T > box_row
Definition: YoungTab.hh:338
const_iterator operator+(unsigned int)
Definition: YoungTab.hh:1226
unsigned int row_number
Definition: YoungTab.hh:173
virtual unsigned int row_size(unsigned int row) const
Definition: YoungTab.hh:1893
const T & operator*() const
Definition: YoungTab.hh:698
iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1167
T value_type
Definition: YoungTab.hh:132
const_iterator & operator--()
Definition: YoungTab.hh:1283
const_iterator operator-(unsigned int)
Definition: YoungTab.hh:1234
iterator begin()
Definition: YoungTab.hh:1366
T * operator->() const
Definition: YoungTab.hh:834
iterator & operator++()
Definition: YoungTab.hh:1107
bool operator!=(const in_column_const_iterator &) const
Definition: YoungTab.hh:790
const filled_tableau< T > * tab
Definition: YoungTab.hh:311
mpq_class yngrat_t
Definition: YoungTab.hh:39
Definition: YoungTab.hh:66
virtual void add_box(unsigned int row)
Definition: YoungTab.hh:1934
filled_tableau< T > * tab
Definition: YoungTab.hh:230
bool operator==(const in_row_iterator &) const
Definition: YoungTab.hh:884
OutputIterator Garnir_set(OutputIterator, unsigned int, unsigned int) const
Definition: YoungTab.hh:1499
in_row_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:847
unsigned int column_number
Definition: YoungTab.hh:286
row_stack rows
Definition: YoungTab.hh:340
filled_tableau< T > * tab
Definition: YoungTab.hh:172
unsigned int column_number
Definition: YoungTab.hh:173
void symmetrise(const T &tabsym)
Definition: YoungTab.hh:387
An iterator which stays inside a given row of a tableau.
Definition: YoungTab.hh:206
bool operator!=(const iterator &) const
Definition: YoungTab.hh:1203
const typedef T & reference
Definition: YoungTab.hh:134
bool operator>=(const in_column_iterator &other) const
Definition: YoungTab.hh:634
void sort_columns()
Definition: YoungTab.hh:477
bool operator<(const const_iterator &other) const
Definition: YoungTab.hh:1342
bool operator>(const const_iterator &other) const
Definition: YoungTab.hh:1349
virtual void remove_box(unsigned int row)
Definition: YoungTab.hh:1964
virtual void remove_box(unsigned int row)=0
in_column_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:747
bool operator==(const in_column_const_iterator &) const
Definition: YoungTab.hh:754
in_column_const_iterator cbegin_column(unsigned int column_number) const
Definition: YoungTab.hh:1425
std::vector< box_row > row_stack
Definition: YoungTab.hh:339
T & operator*() const
Definition: YoungTab.hh:563
virtual void add_box(unsigned int row)
Definition: YoungTab.cc:91
iterator end()
Definition: YoungTab.hh:1372
const T * operator->() const
Definition: YoungTab.hh:970
bool operator<(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1042
bool operator<(const in_row_iterator &other) const
Definition: YoungTab.hh:906
std::ostream & operator<<(std::ostream &str, const tableau &tab)
Definition: YoungTab.cc:132
int ordersign(unsigned int) const
Definition: Combinatorics.hh:458
std::vector< range_t > range_vector_t
Definition: Combinatorics.hh:40
void sort_within_columns()
Definition: YoungTab.hh:470
bool operator!=(const in_column_iterator &) const
Definition: YoungTab.hh:655
const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1270
void swap_columns(unsigned int c1, unsigned int c2)
Definition: YoungTab.hh:1952
int ordersign(iterator1 b1, iterator1 e1, iterator2 b2, iterator2 e2, int stepsize=1)
Definition: Combinatorics.hh:224
void remove_nullifying_traces()
Definition: YoungTab.hh:376
bool standard_form()
Put the set of tableaux into standard form by using Garnir symmetries.
Definition: YoungTab.hh:1539
virtual unsigned int number_of_rows() const
Definition: YoungTab.hh:1887
unsigned int row_number
Definition: YoungTab.hh:286
bool operator<=(const in_row_iterator &other) const
Definition: YoungTab.hh:892
in_row_iterator & operator--()
Definition: YoungTab.hh:854
tableau_container_t storage
Definition: YoungTab.hh:355
std::pair< int, int > find(const T &) const
Definition: YoungTab.hh:458
bool operator>(const in_column_iterator &other) const
Definition: YoungTab.hh:648
virtual unsigned int number_of_rows() const =0
range_vector_t sublengths_scattered
Definition: Combinatorics.hh:167
Definition: YoungTab.hh:47
bool operator!=(const in_row_const_iterator &) const
Definition: YoungTab.hh:1056
std::vector< T > original
Definition: Combinatorics.hh:159
A const iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:177
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:127
T value_type
Definition: YoungTab.hh:122
virtual ~filled_tableau()
Definition: YoungTab.hh:1929
const T * operator->() const
Definition: YoungTab.hh:704
range_vector_t input_asym
Definition: Combinatorics.hh:166
Definition: YoungTab.hh:120
tableau & operator=(const tableau &)
Definition: YoungTab.cc:126
bool operator==(const iterator &) const
Definition: YoungTab.hh:1181
bool operator==(const const_iterator &) const
Definition: YoungTab.hh:1334
virtual unsigned int number_of_rows() const
Definition: YoungTab.cc:110
virtual void remove_box(unsigned int row)
Definition: YoungTab.cc:102
std::vector< T > original
Definition: Combinatorics.hh:76
T & operator[](int n) const
Definition: YoungTab.hh:557
ptrdiff_t difference_type
Definition: YoungTab.hh:136
in_column_const_iterator & operator++()
Definition: YoungTab.hh:710
iterator operator+(unsigned int)
Definition: YoungTab.hh:1073
bool operator!=(const const_iterator &) const
Definition: YoungTab.hh:1356
in_column_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:664
unsigned int row_number
Definition: YoungTab.hh:312
virtual void clear()
Definition: YoungTab.cc:121
bool has_nullifying_trace() const
Definition: YoungTab.hh:428
tableau_base()
Definition: YoungTab.cc:26
unsigned int row_number
Definition: YoungTab.hh:259
in_column_const_iterator operator+(unsigned int)
Definition: YoungTab.hh:676
const T & operator*() const
Definition: YoungTab.hh:964
virtual ~tableau()
Definition: YoungTab.cc:35
virtual void add_box(unsigned int row)=0
std::vector< T > value_permute
Definition: Combinatorics.hh:162
Definition: YoungTab.hh:84
bool operator!=(const in_row_iterator &) const
Definition: YoungTab.hh:920
T & reference
Definition: YoungTab.hh:124
T & operator*() const
Definition: YoungTab.hh:828
in_column_iterator operator+(unsigned int)
Definition: YoungTab.hh:535
in_column_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:582
in_row_iterator operator-(unsigned int)
Definition: YoungTab.hh:814
iterator & operator--()
Definition: YoungTab.hh:1130
filled_tableau< T > & operator=(const filled_tableau< T > &)
Definition: YoungTab.hh:1720
in_row_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:983
unsigned int size() const
Definition: Combinatorics.hh:906
unsigned int column_number
Definition: YoungTab.hh:202
in_row_const_iterator & operator--()
Definition: YoungTab.hh:990
bool operator<(const in_column_const_iterator &other) const
Definition: YoungTab.hh:776
bool operator<=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1028
unsigned int row_number
Definition: YoungTab.hh:202
const filled_tableau< T > * tab
Definition: YoungTab.hh:201
in_row_const_iterator cbegin_row(unsigned int row_number) const
Definition: YoungTab.hh:1471
const typedef T * pointer
Definition: YoungTab.hh:133
T * operator->() const
Definition: YoungTab.hh:1101
unsigned int row_number
Definition: YoungTab.hh:231
in_column_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:717
std::vector< unsigned int > permute_blocks
Definition: Combinatorics.hh:161
bool operator>=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:769
back_insert_iterator get_back_insert_iterator()
Definition: YoungTab.hh:370
in_column_iterator & operator++()
Definition: YoungTab.hh:575
in_row_iterator & operator++()
Definition: YoungTab.hh:840
yngint_t dimension(unsigned int) const
Definition: YoungTab.cc:47
virtual unsigned int row_size(unsigned int row) const =0
size_t size_type
Definition: YoungTab.hh:125
yngrat_t projector_normalisation() const
Definition: YoungTab.hh:1592
void permute(long start=-1, long end=-1)
Definition: Combinatorics.hh:351
const_iterator & operator++()
Definition: YoungTab.hh:1260
std::pair< int, int > nonstandard_loc() const
Definition: YoungTab.hh:1523
Definition: Combinatorics.hh:125
const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:1214
in_column_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:529
bool operator>(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1049
unsigned long factorial(unsigned int x)
Definition: Combinatorics.cc:23
Definition: YoungTab.hh:234
virtual ~tableau_base()
Definition: YoungTab.cc:31
bool operator>(const in_row_iterator &other) const
Definition: YoungTab.hh:913
iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:1067
Definition: Combinatorics.hh:101
mpz_class yngint_t
Definition: YoungTab.hh:38
bool operator<=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:762
int selfdual_column
Definition: YoungTab.hh:60
T & operator()(unsigned int row, unsigned int col)
Definition: YoungTab.hh:1900
in_column_const_iterator & operator--()
Definition: YoungTab.hh:724
void apply_symmetry(long start=-1, long end=-1)
Definition: Combinatorics.hh:695
T * pointer
Definition: YoungTab.hh:123
filled_tableau< std::pair< int, int > > keeptrack_tab_t
Definition: YoungTab.hh:1764
bool operator<(const iterator &other) const
Definition: YoungTab.hh:1189
int signature(unsigned int) const
Definition: Combinatorics.hh:996
void canonicalise()
Sort equal-length columns and sort within columns.
Definition: YoungTab.hh:484
bool operator>(const iterator &other) const
Definition: YoungTab.hh:1196
std::back_insert_iterator< tableau_container_t > back_insert_iterator
Definition: YoungTab.hh:357
yngint_t total_dimension(unsigned int dim)
Definition: YoungTab.hh:1728
const T * operator->() const
Definition: YoungTab.hh:1254
const_iterator cend() const
Definition: YoungTab.hh:1385
void LR_tensor(const tableaux< T > &tabs1, const T &tab2, unsigned int maxrows, OutputIterator out, bool alltabs=false)
Definition: YoungTab.hh:1740
void projector(combin::symmetriser< T > &, bool modulo_monoterm=false) const
Definition: YoungTab.hh:1600
in_column_iterator operator-(unsigned int)
Definition: YoungTab.hh:543
unsigned int block_length
Definition: Combinatorics.hh:160
bool operator==(const in_row_const_iterator &) const
Definition: YoungTab.hh:1020
Definition: YoungTab.hh:130
in_row_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:929
in_column_iterator & operator--()
Definition: YoungTab.hh:589
unsigned long hook_length(unsigned int row, unsigned int col) const
Definition: YoungTab.cc:72
in_column_iterator begin_column(unsigned int column_number)
Definition: YoungTab.hh:1403
size_t size_type
Definition: YoungTab.hh:135
void LR_add_box(const Tab &tab2, Tab &newtab, unsigned int currow2, unsigned int curcol2, unsigned int startrow, unsigned int maxrows, OutputIterator outit, keeptrack_tab_t &Ycurrent, bool alltabs)
Definition: YoungTab.hh:1767
virtual void clear()
Definition: YoungTab.hh:1974
std::vector< int > rows
Definition: YoungTab.hh:77
bool operator==(const in_column_iterator &) const
Definition: YoungTab.hh:619
unsigned int column_number
Definition: YoungTab.hh:312
in_column_const_iterator cend_column(unsigned int column_number) const
Definition: YoungTab.hh:1434
An iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:147
in_row_iterator end_row(unsigned int row_number)
Definition: YoungTab.hh:1465