|
|
Definition at line 29 of file abelian.h. Referenced by atlas::abelian::FiniteAbelianGroup::leftApply(), toEndomorphism(), and transpose(). |
|
|
Definition at line 31 of file abelian_fwd.h. |
|
|
Definition at line 29 of file abelian_fwd.h. |
|
|
Definition at line 30 of file abelian_fwd.h. |
|
|
Definition at line 27 of file abelian_fwd.h. |
|
|
Definition at line 28 of file abelian_fwd.h. Referenced by basis(). |
|
||||||||||||||||
|
Synopsis: writes A/B in canonical form. Explanation: we see the current group A as a quotient of Z^d, where d is the rank of A, and the generators of the kernel are given by d_type. Then we wish to write the quotient A/B in canonical form (i.e., as a product of cyclic groups with cardinalities dividing each other.) For this, we put in b a scaled Smith normal basis for the inverse image of B in Z^d. Note that A is not necessarily in canonical form, so even when B is the trivial subgroup this might yield a basis rather different from the kernel basis. Definition at line 544 of file abelian.cpp. References generators(), GrpNbrList, atlas::matrix::initBasis(), atlas::latticetypes::LatticeMatrix, atlas::abelian::FiniteAbelianGroup::rank(), atlas::smithnormal::smithNormal(), atlas::abelian::FiniteAbelianGroup::toWeight(), atlas::abelian::FiniteAbelianGroup::type(), atlas::latticetypes::Weight, and atlas::latticetypes::WeightList. Referenced by atlas::interpreter::based_involution_wrapper(), atlas::interpreter::filter_units_wrapper(), atlas::testrun::CoveringIterator::makeBasis(), atlas::interpreter::set_inner_class_wrapper(), and atlas::interpreter::set_type_wrapper(). |
|
||||||||||||||||||||
|
Synopsis: puts in C the coset x+B in A. Precondition: C.size() == A.size(); NOTE : this is a straightforward implementation, shifting elements of B individually. Definition at line 605 of file abelian.cpp. References atlas::abelian::FiniteAbelianGroup::add(), atlas::bitmap::BitMap::begin(), atlas::bitmap::BitMap::end(), atlas::bitmap::BitMap::insert(), and atlas::bitmap::BitMap::reset(). Referenced by generateSubgroup(), quotReps(), and atlas::updateCycGenerator(). |
|
|
Synopsis: returns a reference to a bitmap containing exactly one generator for each cyclic subgroup of A. NOTE: it is expected that this function will typically be called repeatedly for the same group. The bitmap is constructed on the first call for the given group, following the principle of lazy evaluation. Definition at line 631 of file abelian.cpp. References atlas::bitmap::BitMap::begin(), atlas::bitmap::BitMap::end(), atlas::bitmap::BitMap::fill(), atlas::arithmetic::gcd(), atlas::abelian::FiniteAbelianGroup::order(), atlas::abelian::FiniteAbelianGroup::prod(), atlas::bitmap::BitMap::remove(), atlas::bitmap::BitMap::set_capacity(), atlas::abelian::FiniteAbelianGroup::size(), and atlas::abelian::FiniteAbelianGroup::type(). Referenced by atlas::setCycGenerator(). |
|
||||||||||||||||
|
Synopsis: transforms B into the subgroup generated by B and x in A. NOTE : this is a simple-minded implementation; we do not aim for speed. Definition at line 673 of file abelian.cpp. References coset(), atlas::abelian::FiniteAbelianGroup::order(), atlas::abelian::FiniteAbelianGroup::prod(), atlas::abelian::FiniteAbelianGroup::size(), and atlas::bitmap::BitMap::swap(). Referenced by atlas::testrun::SubgroupIterator::incrementGenerator(). |
|
||||||||||||||||
|
Synopsis: puts in gen a list of generators of the subgroup B. Definition at line 699 of file abelian.cpp. References atlas::bitmap::BitMap::begin(), and atlas::bitmap::BitMap::end(). Referenced by basis(). |
|
|
Tells if c is all twos. Definition at line 712 of file abelian.cpp. |
|
||||||||||||||||
|
Synopsis: puts in qr a list of representatives of the cosets modulo B. Precondition: qr.size() = A.size(); Algorithm: fill up qr; traverse qr, and for each x that is reached, remove from qr the elements of the coset of x other than x. The efficiency depends on the efficiency of coset computations. Definition at line 726 of file abelian.cpp. References atlas::bitmap::BitMap::andnot(), atlas::bitmap::BitMap::begin(), coset(), atlas::bitmap::BitMap::end(), atlas::bitmap::BitMap::fill(), and atlas::abelian::FiniteAbelianGroup::size(). Referenced by atlas::testrun::CoveringIterator::CoveringIterator(), and atlas::testrun::CoveringIterator::operator++(). |
|
||||||||||||||||
|
Synopsis: reduces v mod d_type. The only difficulty is to make sure that negative values are reduced in the way that we want. Precondition: a is set to v.size(); Definition at line 777 of file abelian.cpp. References atlas::arithmetic::remainder(). Referenced by atlas::abelian::FiniteAbelianGroup::toArray(). |
|
||||||||||||||||
|
Synopsis: puts the array-form of x in a. Precondition: x is representable for t (x < prod t[j]); otherwise the result is the expression of x modulo that product. Explanation: the array-form (relative to type) is the unique expression of x in the variable base defined by type. Definition at line 756 of file abelian.cpp. Referenced by atlas::abelian::FiniteAbelianGroup::add(), atlas::abelian::Homomorphism::apply(), atlas::abelian::Homomorphism::defined(), atlas::abelian::FiniteAbelianGroup::leftApply(), and atlas::abelian::FiniteAbelianGroup::order(). |
|
||||||||||||||||
|
Synopsis: transforms q into the corresponding Endomorphism. This just involves rewriting the coeficients as unsigned longs modulo the type factors. Just in case the conventions for modular arithmetic with negative numbers are not what we want, we make sure that we deal with nonnegative numbers all along. NOTE: there should be some better way to do this! Definition at line 797 of file abelian.cpp. References Endomorphism, atlas::latticetypes::LatticeMatrix, atlas::matrix::Matrix< C >::numColumns(), atlas::matrix::Matrix< C >::numRows(), atlas::arithmetic::remainder(), atlas::matrix::Matrix< C >::resize(), and atlas::abelian::FiniteAbelianGroup::type(). |
|
||||||||||||
|
Synopsis: returns the number-form of a. Precondition: a is representable as a GrpNbr; Definition at line 823 of file abelian.cpp. Referenced by atlas::abelian::FiniteAbelianGroup::add(), atlas::abelian::Homomorphism::apply(), atlas::abelian::FiniteAbelianGroup::leftApply(), and atlas::abelian::FiniteAbelianGroup::toGrpNbr(). |
|
||||||||||||
|
Synopsis: transposes the endomorphism e. This is more subtle than one might think; the main point is that when m|n, the transpose of the canonical map Z/nZ -> Z/mZ is the injection Z/mZ -> Z/nZ which takes 1 to n/m. In general, any map Z/nZ -> Z/mZ factors thru Z/dZ, where d = gcd(m,n), so it is a multiple of the map defined by 1 -> m/d; the transpose is the same multiple of 1 -> n/d. NOTE: this implementation works for homomorphisms between different groups just as well (except that one needs two grouptypes then.) Definition at line 843 of file abelian.cpp. References Endomorphism, atlas::arithmetic::gcd(), atlas::matrix::Matrix< C >::numColumns(), atlas::matrix::Matrix< C >::numRows(), atlas::matrix::Matrix< C >::resize(), atlas::abelian::FiniteAbelianGroup::type(), and atlas::lietype::type(). |
1.3.9.1