|
constexpr TLFLOAT_INLINE | BigUInt (const BigUInt< N-1 > &h, const BigUInt< N-1 > &l) |
|
constexpr TLFLOAT_INLINE | BigUInt ()=default |
|
template<typename T , std::enable_if_t<(std::is_integral_v< T > &&std::is_unsigned_v< T > &&sizeof(T)<=8), int > = 0> |
constexpr TLFLOAT_INLINE | BigUInt (T u) |
|
template<typename T , std::enable_if_t<(std::is_integral_v< T > &&!std::is_unsigned_v< T > &&sizeof(T)<=8), int > = 0> |
constexpr TLFLOAT_INLINE | BigUInt (T i) |
|
template<typename T , std::enable_if_t<(std::is_integral_v< T > &&std::is_unsigned_v< T > &&sizeof(T)<=8 &&!std::is_same_v< T, bool >), int > = 0> |
constexpr TLFLOAT_INLINE | operator T () const |
|
template<typename T , std::enable_if_t<(std::is_integral_v< T > &&!std::is_unsigned_v< T > &&sizeof(T)<=8 &&!std::is_same_v< T, bool >), int > = 0> |
constexpr TLFLOAT_INLINE | operator T () const |
|
constexpr TLFLOAT_INLINE | operator bool () const |
|
constexpr TLFLOAT_INLINE | BigUInt (const BigUInt &m)=default |
|
constexpr TLFLOAT_INLINE | BigUInt (const BigUInt< N+1 > &h) |
|
template<int K, std::enable_if_t<(K< N)> * = nullptr> |
constexpr TLFLOAT_INLINE | BigUInt (const BigUInt< K > &l) |
|
template<int K, std::enable_if_t<(K >(N+1))> * = nullptr> |
constexpr TLFLOAT_INLINE | BigUInt (const BigUInt< K > &h) |
|
constexpr TLFLOAT_INLINE BigUInt & | operator= (const BigUInt &u)=default |
|
constexpr TLFLOAT_INLINE | BigUInt (const uint64_t *p) |
|
constexpr | BigUInt (double d) |
|
constexpr | operator double () const |
|
constexpr TLFLOAT_INLINE unsigned | clz () const |
|
constexpr TLFLOAT_INLINE unsigned | ilogbp1 () const |
|
constexpr TLFLOAT_INLINE bool | isZero () const |
|
constexpr TLFLOAT_INLINE bool | isZero2 () const |
|
constexpr TLFLOAT_INLINE bool | isAllOne () const |
|
constexpr TLFLOAT_INLINE bool | msb () const |
|
constexpr TLFLOAT_INLINE uint64_t | getWord (unsigned idx) const |
|
constexpr TLFLOAT_INLINE void | setWord (unsigned idx, uint64_t u) |
|
constexpr TLFLOAT_INLINE bool | bit (unsigned idx) const |
|
constexpr TLFLOAT_INLINE BigUInt & | operator++ () |
|
constexpr TLFLOAT_INLINE BigUInt & | operator-- () |
|
constexpr TLFLOAT_INLINE BigUInt | operator++ (int) |
|
constexpr TLFLOAT_INLINE BigUInt | operator-- (int) |
|
template<int... , int K = N, std::enable_if_t<(K !=7), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator+ (const BigUInt &rhs) const |
|
template<int... , int K = N, std::enable_if_t<(K !=7), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator- (const BigUInt &rhs) const |
|
template<int... , int K = N, std::enable_if_t<(K==7), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator+ (const BigUInt &rhs) const |
| defined(TLFLOAT_ENABLE_INT128_OPT)
|
|
template<int... , int K = N, std::enable_if_t<(K==7), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator- (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator+ (const BigUInt< N-1 > &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator- (const BigUInt< N-1 > &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator- () const |
|
constexpr TLFLOAT_INLINE BigUInt | operator+ () const |
|
constexpr TLFLOAT_INLINE BigUInt | operator* (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator* (const BigUInt< N-1 > &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator/ (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator% (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | reciprocal () const |
|
constexpr TLFLOAT_INLINE BigUInt | reciprocal2 () const |
|
constexpr TLFLOAT_INLINE bool | eq (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE bool | operator== (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE bool | operator!= (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE int | compare (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE bool | operator> (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE bool | operator< (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE bool | operator<= (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE bool | operator>= (BigUInt const &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator& (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator| (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator^ (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator~ () const |
|
constexpr TLFLOAT_INLINE BigUInt | operator<< (int n) const |
|
constexpr TLFLOAT_INLINE BigUInt | operator>> (int n) const |
|
constexpr TLFLOAT_INLINE BigUInt & | operator<<= (int n) |
|
constexpr TLFLOAT_INLINE BigUInt & | operator>>= (int n) |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator+ (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator- (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator* (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator/ (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator% (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator& (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator| (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE BigUInt | operator^ (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE bool | operator== (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE bool | operator!= (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE bool | operator> (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE bool | operator< (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE bool | operator>= (const rhstype &rhs) const |
|
template<typename rhstype , std::enable_if_t<(std::is_integral_v< rhstype >||(sizeof(rhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< rhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE bool | operator<= (const rhstype &rhs) const |
|
template<typename srctype > |
constexpr TLFLOAT_INLINE BigUInt & | operator= (const srctype &s) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator+= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator-= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator*= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator/= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator%= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator&= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator|= (const rhstype &rhs) |
|
template<typename rhstype > |
constexpr TLFLOAT_INLINE BigUInt & | operator^= (const rhstype &rhs) |
|
constexpr TLFLOAT_INLINE BigUInt & | operator+= (bool rhs) |
|
constexpr TLFLOAT_INLINE BigUInt | divmod (const BigUInt &rhs, const BigUInt &recip, BigUInt *mod) const |
|
constexpr TLFLOAT_INLINE xpair< BigUInt, BigUInt > | divmod (const BigUInt &rhs, const BigUInt &recip) const |
|
constexpr TLFLOAT_INLINE xpair< BigUInt, BigUInt > | divmod (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE xpair< BigUInt, BigUInt > | divmod2 (const BigUInt &rhs, const BigUInt &recip2) const |
|
constexpr TLFLOAT_INLINE xpair< BigUInt, BigUInt > | divmod2 (const BigUInt &rhs) const |
|
constexpr TLFLOAT_INLINE BigUInt | mod (const BigUInt &rhs, const BigUInt &recip) const |
|
constexpr BigUInt | pow (BigUInt e, const BigUInt &m=0, BigUInt recm=0) const |
|
constexpr BigUInt | gcd (BigUInt b) const |
|
constexpr TLFLOAT_NOINLINE | BigUInt (const char *p_, const char **endptr=nullptr, const int base_=10) |
|
|
template<int > |
class | BigUInt |
|
template<int > |
class | BigInt |
|
template<typename Unpacked_t > |
class | TLFloat |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator+ (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator- (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator* (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator/ (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator% (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator& (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator| (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend BigUInt | operator^ (const lhstype c, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend bool | operator== (const lhstype &lhs, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend bool | operator!= (const lhstype &lhs, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend bool | operator> (const lhstype &lhs, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend bool | operator< (const lhstype &lhs, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend bool | operator>= (const lhstype &lhs, const BigUInt &rhs) |
|
template<typename lhstype , std::enable_if_t<(std::is_integral_v< lhstype >||(sizeof(lhstype)<(8<<(N - 6)) &&!std::is_floating_point_v< lhstype >)), int > = 0> |
constexpr TLFLOAT_INLINE friend bool | operator<= (const lhstype &lhs, const BigUInt &rhs) |
|