Makes tc::Group a direct subclass of Eigen::Matrix. Group should represent a Schlafli matrix.
Added a note that tc::solve assumes the matrix to be for a coxeter group.
In theory we could also implement the "normal" todd-coxeter and allow any Schlafli matrix as input.
Profiling revealed significant performance overhead in using std::shared_ptr for lst.
There is even significant overhead in using new for lst.
Using pointers to blocks of pre-allocated memory for lst drastically improves performance (about 50%).
E7 and E8 show this well, since they allocate many lst pointers.
With shared_ptr: E7 ~3.3s, B8 ~21s.
With BlockAllocator: E7 ~1.6s, B8 ~11s.
Some performance hit, but remember that std::vector already does block allocation so it's not too bad.
- Remove block-allocation from RelTables
- Use std::shared_ptr for lst_ptrs
- Replace vector-of-struct-of-vector with vector-of-struct.
- Remove rels from RelTables