#include <size.h>
Collaboration diagram for atlas::size::SizeType< C >:

Public Member Functions | |
| SizeType () | |
| SizeType (unsigned long) | |
| ~SizeType () | |
| SizeType (const SizeType &a) | |
| SizeType & | operator= (const SizeType &a) |
| C | operator[] (size_t j) const |
| bool | operator== (const SizeType &c) const |
| bool | operator!= (const SizeType &c) const |
| bool | hasOverflow () const |
| bool | hasOverflow (size_t) const |
| unsigned long | piece (size_t) const |
| unsigned long | toUlong () const |
| C & | operator[] (size_t j) |
| SizeType & | operator *= (const SizeType &) |
| SizeType & | operator *= (unsigned long) |
| SizeType & | operator/= (const SizeType &) |
| void | reset () |
| void | twoShift (C n) |
Private Attributes | |
| C | d_data [PRIMES_MAX] |
The exponent of the jth prime is d_data[j]. The reason for using this is that the software must occasionally deal with integers too large to be unsigned long; mostly these appear as cardinalities of Weyl groups. The constant PRIMES_MAX is chosen so that the cardinality of any Weyl group of rank at most RANK_MAX can be represented as a SizeType. (Note from DV: when RANK_MAX is 16, it appears to me that the largest possible prime factor of a Weyl group order is the sixth prime 13, so one should for elegance choose PRIMES_MAX=6. The constant used above in that case is PRIMES_MAX=7. But taking PRIMES_MAX too large is harmless.)
Definition at line 136 of file size.h.
|
|||||||||
|
|
|
||||||||||
|
Synopsis: constructs the SizeType object representing a. Triggers a fatal error if a is not representable as a SizeType Definition at line 31 of file size_def.h. References atlas::size::SizeType< C >::d_data, atlas::size::prime(), atlas::size::PRIMES_MAX, and atlas::error::PrimesError. |
|
|||||||||
|
|
|
||||||||||
|
|
|
||||||||||
|
|
|
|||||||||
|
|
|
||||||||||
|
Synopsis: current *= SizeType(a). Precondition: a is representable as a SizeType. Definition at line 129 of file size_def.h. References atlas::size::SizeType< C >::d_data, and atlas::size::prime(). |
|
||||||||||
|
NOTE: multiplication becomes addition in our logarithmic representation. NOTE: we explicitly convert to long to avoid compiler warnings. Definition at line 111 of file size_def.h. References atlas::size::SizeType< C >::d_data. |
|
||||||||||
|
|
|
||||||||||
|
NOTE: division becomes subtraction in our logarithmic representation. Definition at line 148 of file size_def.h. References atlas::size::SizeType< C >::d_data. |
|
||||||||||
|
|
|
||||||||||
|
|
|
||||||||||
|
|
|
||||||||||
|
|
|
||||||||||
|
Synopsis: return the unsigned long value of prime(j)^^d_data[j] The algorithm is the classical algorithm with squarings and multiplications, logarithmic in j. NOTE: in case of overflow, we simply return the value modulo 2^^longBits. Definition at line 60 of file size_def.h. References atlas::size::prime(). Referenced by atlas::size::SizeType< C >::toUlong(). |
|
|||||||||
|
Definition at line 193 of file size.h. Referenced by atlas::realweyl::blockStabilizerSize(), atlas::realweyl::dualRealWeylSize(), atlas::size::factorial(), atlas::realweyl::realWeylSize(), and atlas::weylsize::weylSize(). |
|
|||||||||
|
Synopsis: returns the unsigned long value of *this. NOTE: in case of overflow, we simply return the value modulo 2^^longBits. Definition at line 91 of file size_def.h. References atlas::size::SizeType< C >::piece(). Referenced by atlas::cartanclass::CartanClass::orbitSize(). |
|
||||||||||
|
Definition at line 197 of file size.h. Referenced by atlas::realweyl::blockStabilizerSize(), atlas::realweyl::dualRealWeylSize(), and atlas::realweyl::realWeylSize(). |
|
|||||
1.3.9.1