libTriton  version 1.0 build 1532
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned > Class Template Reference

Public Types

using limb_type = LimbType
 
using double_limb_type = typename detail::uint_type_helper< static_cast< size_t >(std::numeric_limits< limb_type >::digits *2)>::exact_unsigned_type
 
using ushort_type = limb_type
 
using ularge_type = double_limb_type
 
using representation_type = typename std::conditional< std::is_same< AllocatorType, void >::value, detail::fixed_static_array< limb_type, number_of_limbs >, detail::fixed_dynamic_array< limb_type, number_of_limbs, typename std::allocator_traits< typename std::conditional< std::is_same< AllocatorType, void >::value, std::allocator< void >, AllocatorType >::type >::template rebind_alloc< limb_type > > >::type
 
using iterator = typename representation_type::iterator
 
using const_iterator = typename representation_type::const_iterator
 
using reverse_iterator = typename representation_type::reverse_iterator
 
using const_reverse_iterator = typename representation_type::const_reverse_iterator
 
using double_width_type = uintwide_t< static_cast< size_t >(Width2 *2U), limb_type, AllocatorType, IsSigned >
 

Public Member Functions

template<typename UnsignedIntegralType >
constexpr uintwide_t (const UnsignedIntegralType v, typename std::enable_if<((std::is_integral< UnsignedIntegralType >::value) &&(std::is_unsigned< UnsignedIntegralType >::value) &&(std::numeric_limits< UnsignedIntegralType >::digits<=std::numeric_limits< limb_type >::digits))>::type *=nullptr)
 
template<typename UnsignedIntegralType >
WIDE_INTEGER_CONSTEXPR uintwide_t (const UnsignedIntegralType v, typename std::enable_if<((std::is_integral< UnsignedIntegralType >::value) &&(std::is_unsigned< UnsignedIntegralType >::value) &&(std::numeric_limits< UnsignedIntegralType >::digits > std::numeric_limits< limb_type >::digits))>::type *p_nullparam=nullptr)
 
template<typename SignedIntegralType >
WIDE_INTEGER_CONSTEXPR uintwide_t (const SignedIntegralType v, typename std::enable_if<((std::is_integral< SignedIntegralType >::value) &&(std::is_signed< SignedIntegralType >::value))>::type *p_nullparam=nullptr)
 
template<typename FloatingPointType , typename std::enable_if<(std::is_floating_point< FloatingPointType >::value)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR uintwide_t (const FloatingPointType f)
 
constexpr uintwide_t (const uintwide_t &other)=default
 
template<const bool OtherIsSigned, typename std::enable_if<(OtherIsSigned !=IsSigned)>::type const * = nullptr>
constexpr uintwide_t (const uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &other)
 
template<const size_t OtherWidth2, const bool OtherIsSigned, typename std::enable_if<(Width2< OtherWidth2)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR uintwide_t (const uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned > &v)
 
template<const size_t OtherWidth2, const bool OtherIsSigned, typename std::enable_if<(Width2 > OtherWidth2)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR uintwide_t (const uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned > &v)
 
WIDE_INTEGER_CONSTEXPR uintwide_t (const char *str_input)
 
constexpr uintwide_t (uintwide_t &&other) noexcept=default
 
template<const bool OtherIsSigned, typename std::enable_if<(IsSigned !=OtherIsSigned)>::type const * = nullptr>
constexpr uintwide_t (uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &&other)
 
WIDE_INTEGER_CONSTEXPR auto operator= (const uintwide_t &other) -> uintwide_t &=default
 
template<const bool OtherIsSigned, typename std::enable_if<(OtherIsSigned !=IsSigned)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR auto operator= (const uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator= (uintwide_t &&other) noexcept -> uintwide_t &=default
 
template<const bool OtherIsSigned, typename std::enable_if<(IsSigned !=OtherIsSigned)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR auto operator= (uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &&other) -> uintwide_t &
 
constexpr operator long double () const
 
constexpr operator double () const
 
constexpr operator float () const
 
template<typename IntegralType , typename = typename std::enable_if<std::is_integral<IntegralType>::value>::type>
constexpr operator IntegralType () const
 
constexpr operator bool () const
 
template<const size_t OtherWidth2, const bool OtherIsSigned, typename = typename std::enable_if<(Width2 != OtherWidth2), uintwide_t<OtherWidth2, LimbType, AllocatorType, OtherIsSigned>>::type>
WIDE_INTEGER_CONSTEXPR operator uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned > () const
 
template<const bool OtherIsSigned, typename = typename std::enable_if<(OtherIsSigned != IsSigned), uintwide_t<Width2, LimbType, AllocatorType, OtherIsSigned>>::type>
WIDE_INTEGER_CONSTEXPR operator uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > () const
 
WIDE_INTEGER_CONSTEXPR auto representation () -> representation_type &
 
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto representation () const -> const representation_type &
 
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto crepresentation () const -> const representation_type &
 
WIDE_INTEGER_CONSTEXPR auto operator+ () const -> const uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator- () const -> uintwide_t
 
WIDE_INTEGER_CONSTEXPR auto operator+= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator-= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator*= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto mul_by_limb (const limb_type v) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator/= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator%= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator++ () -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator-- () -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator++ (int) -> uintwide_t
 
WIDE_INTEGER_CONSTEXPR auto operator-- (int) -> uintwide_t
 
WIDE_INTEGER_CONSTEXPR auto operator~ () -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator|= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator^= (const uintwide_t &other) -> uintwide_t &
 
WIDE_INTEGER_CONSTEXPR auto operator&= (const uintwide_t &other) -> uintwide_t &
 
template<typename SignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto operator<<= (const SignedIntegralType n) -> typename std::enable_if<((std::is_integral< SignedIntegralType >::value) &&(std::is_signed< SignedIntegralType >::value)), uintwide_t >::type &
 
template<typename UnsignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto operator<<= (const UnsignedIntegralType n) -> typename std::enable_if<((std::is_integral< UnsignedIntegralType >::value) &&(!std::is_signed< UnsignedIntegralType >::value)), uintwide_t >::type &
 
template<typename SignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto operator>>= (const SignedIntegralType n) -> typename std::enable_if<((std::is_integral< SignedIntegralType >::value) &&(std::is_signed< SignedIntegralType >::value)), uintwide_t >::type &
 
template<typename UnsignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto operator>>= (const UnsignedIntegralType n) -> typename std::enable_if<((std::is_integral< UnsignedIntegralType >::value) &&(!std::is_signed< UnsignedIntegralType >::value)), uintwide_t >::type &
 
constexpr auto operator== (const uintwide_t &other) const -> bool
 
constexpr auto operator< (const uintwide_t &other) const -> bool
 
constexpr auto operator> (const uintwide_t &other) const -> bool
 
constexpr auto operator!= (const uintwide_t &other) const -> bool
 
constexpr auto operator<= (const uintwide_t &other) const -> bool
 
constexpr auto operator>= (const uintwide_t &other) const -> bool
 
WIDE_INTEGER_CONSTEXPR auto wr_string (char *str_result, const std::uint_fast8_t base_rep=0x10U, const bool show_base=true, const bool show_pos=false, const bool is_uppercase=true, unsigned_fast_type field_width=0U, const char fill_char=static_cast< char >('0')) const -> bool
 
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(!RePhraseIsSigned)>::type const * = nullptr>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto compare (const uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned > &other) const -> std::int_fast8_t
 
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(RePhraseIsSigned)>::type const * = nullptr>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto compare (const uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned > &other) const -> std::int_fast8_t
 
WIDE_INTEGER_CONSTEXPR void negate ()
 
WIDE_INTEGER_CONSTEXPR void eval_divide_by_single_limb (const limb_type short_denominator, const unsigned_fast_type u_offset, uintwide_t *remainder)
 
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto is_zero () const -> bool
 

Static Public Member Functions

static constexpr auto limits_helper_max (bool is_signed) -> uintwide_t
 
static constexpr auto limits_helper_min (bool is_signed) -> uintwide_t
 
static constexpr auto limits_helper_min () -> uintwide_t
 
static constexpr auto limits_helper_lowest (bool is_signed) -> uintwide_t
 
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(!RePhraseIsSigned)>::type const * = nullptr>
static constexpr auto is_neg (uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned >) -> bool
 
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(RePhraseIsSigned)>::type const * = nullptr>
static constexpr auto is_neg (uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned > a) -> bool
 
static constexpr auto from_rep (const representation_type &other_rep) -> uintwide_t
 
static constexpr auto from_rep (representation_type &&other_rep) -> uintwide_t
 

Static Public Attributes

static constexpr size_t my_width2 = Width2
 
static constexpr size_t number_of_limbs
 
static constexpr size_t number_of_limbs_karatsuba_threshold = static_cast<size_t>(128U + 1U)
 
static constexpr auto wr_string_max_buffer_size_oct
 
static constexpr auto wr_string_max_buffer_size_hex
 
static constexpr auto wr_string_max_buffer_size_dec
 

Detailed Description

template<const size_t Width2, typename LimbType, typename AllocatorType, const bool IsSigned>
class math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >

Definition at line 1273 of file uintwide_t.h.

Member Typedef Documentation

◆ const_iterator

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::const_iterator = typename representation_type::const_iterator

Definition at line 1339 of file uintwide_t.h.

◆ const_reverse_iterator

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::const_reverse_iterator = typename representation_type::const_reverse_iterator

Definition at line 1341 of file uintwide_t.h.

◆ double_limb_type

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::double_limb_type = typename detail::uint_type_helper<static_cast<size_t>(std::numeric_limits<limb_type>::digits * 2)>::exact_unsigned_type

Definition at line 1285 of file uintwide_t.h.

◆ double_width_type

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::double_width_type = uintwide_t<static_cast<size_t>(Width2 * 2U), limb_type, AllocatorType, IsSigned>

Definition at line 1344 of file uintwide_t.h.

◆ iterator

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::iterator = typename representation_type::iterator

Definition at line 1338 of file uintwide_t.h.

◆ limb_type

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::limb_type = LimbType

Definition at line 1283 of file uintwide_t.h.

◆ representation_type

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::representation_type = typename std::conditional <std::is_same<AllocatorType, void>::value, detail::fixed_static_array <limb_type, number_of_limbs>, detail::fixed_dynamic_array<limb_type, number_of_limbs, typename std::allocator_traits<typename std::conditional<std::is_same<AllocatorType, void>::value, std::allocator<void>, AllocatorType>::type>::template rebind_alloc<limb_type> > >::type

Definition at line 1325 of file uintwide_t.h.

◆ reverse_iterator

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::reverse_iterator = typename representation_type::reverse_iterator

Definition at line 1340 of file uintwide_t.h.

◆ ularge_type

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::ularge_type = double_limb_type

Definition at line 1291 of file uintwide_t.h.

◆ ushort_type

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
using math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::ushort_type = limb_type

Definition at line 1290 of file uintwide_t.h.

Constructor & Destructor Documentation

◆ uintwide_t() [1/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename UnsignedIntegralType >
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const UnsignedIntegralType  v,
typename std::enable_if<((std::is_integral< UnsignedIntegralType >::value) &&(std::is_unsigned< UnsignedIntegralType >::value) &&(std::numeric_limits< UnsignedIntegralType >::digits<=std::numeric_limits< limb_type >::digits))>::type *  = nullptr 
)
inlineconstexpr

Definition at line 1352 of file uintwide_t.h.

◆ uintwide_t() [2/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename UnsignedIntegralType >
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const UnsignedIntegralType  v,
typename std::enable_if<((std::is_integral< UnsignedIntegralType >::value) &&(std::is_unsigned< UnsignedIntegralType >::value) &&(std::numeric_limits< UnsignedIntegralType >::digits > std::numeric_limits< limb_type >::digits))>::type *  p_nullparam = nullptr 
)
inline

Definition at line 1362 of file uintwide_t.h.

◆ uintwide_t() [3/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename SignedIntegralType >
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const SignedIntegralType  v,
typename std::enable_if<((std::is_integral< SignedIntegralType >::value) &&(std::is_signed< SignedIntegralType >::value))>::type *  p_nullparam = nullptr 
)
inline

Definition at line 1386 of file uintwide_t.h.

◆ uintwide_t() [4/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename FloatingPointType , typename std::enable_if<(std::is_floating_point< FloatingPointType >::value)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const FloatingPointType  f)
inline

Definition at line 1410 of file uintwide_t.h.

◆ uintwide_t() [5/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool OtherIsSigned, typename std::enable_if<(OtherIsSigned !=IsSigned)>::type const * = nullptr>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &  other)
inlineconstexpr

Definition at line 1467 of file uintwide_t.h.

◆ uintwide_t() [6/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const size_t OtherWidth2, const bool OtherIsSigned, typename std::enable_if<(Width2< OtherWidth2)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned > &  v)
inlineexplicit

Definition at line 1475 of file uintwide_t.h.

◆ uintwide_t() [7/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const size_t OtherWidth2, const bool OtherIsSigned, typename std::enable_if<(Width2 > OtherWidth2)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned > &  v)
inlineexplicit

Definition at line 1506 of file uintwide_t.h.

◆ uintwide_t() [8/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( const char *  str_input)
inline

Definition at line 1537 of file uintwide_t.h.

◆ uintwide_t() [9/9]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool OtherIsSigned, typename std::enable_if<(IsSigned !=OtherIsSigned)>::type const * = nullptr>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::uintwide_t ( uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &&  other)
inlineconstexpr

Definition at line 1552 of file uintwide_t.h.

Member Function Documentation

◆ compare() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(!RePhraseIsSigned)>::type const * = nullptr>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::compare ( const uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned > &  other) const -> std::int_fast8_t
inline

Definition at line 2442 of file uintwide_t.h.

◆ compare() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(RePhraseIsSigned)>::type const * = nullptr>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::compare ( const uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned > &  other) const -> std::int_fast8_t
inline

Definition at line 2451 of file uintwide_t.h.

◆ crepresentation()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::crepresentation ( ) const -> const representation_type &
inline

Definition at line 1676 of file uintwide_t.h.

◆ eval_divide_by_single_limb()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR void math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::eval_divide_by_single_limb ( const limb_type  short_denominator,
const unsigned_fast_type  u_offset,
uintwide_t< Width2, LimbType, AllocatorType, IsSigned > *  remainder 
)
inline

Definition at line 2471 of file uintwide_t.h.

◆ from_rep() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::from_rep ( const representation_type &  other_rep) -> uintwide_t
inlinestaticconstexpr

Definition at line 2536 of file uintwide_t.h.

◆ from_rep() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::from_rep ( representation_type &&  other_rep) -> uintwide_t
inlinestaticconstexpr

Definition at line 2542 of file uintwide_t.h.

◆ is_neg() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(RePhraseIsSigned)>::type const * = nullptr>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::is_neg ( uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned >  a) -> bool
inlinestaticconstexpr

Definition at line 2531 of file uintwide_t.h.

◆ is_neg() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool RePhraseIsSigned = IsSigned, typename std::enable_if<(!RePhraseIsSigned)>::type const * = nullptr>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::is_neg ( uintwide_t< Width2, LimbType, AllocatorType, RePhraseIsSigned >  ) -> bool
inlinestaticconstexpr

Definition at line 2524 of file uintwide_t.h.

◆ is_zero()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::is_zero ( ) const -> bool
inline

Definition at line 2510 of file uintwide_t.h.

◆ limits_helper_lowest()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::limits_helper_lowest ( bool  is_signed) -> uintwide_t
inlinestaticconstexpr

Definition at line 2091 of file uintwide_t.h.

◆ limits_helper_max()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::limits_helper_max ( bool  is_signed) -> uintwide_t
inlinestaticconstexpr

Definition at line 2044 of file uintwide_t.h.

◆ limits_helper_min() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::limits_helper_min ( ) -> uintwide_t
inlinestaticconstexpr

Definition at line 2086 of file uintwide_t.h.

◆ limits_helper_min() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
static constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::limits_helper_min ( bool  is_signed) -> uintwide_t
inlinestaticconstexpr

Definition at line 2065 of file uintwide_t.h.

◆ mul_by_limb()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::mul_by_limb ( const limb_type  v) -> uintwide_t &
inline

Definition at line 1749 of file uintwide_t.h.

◆ negate()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR void math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::negate ( )
inline

Definition at line 2464 of file uintwide_t.h.

◆ operator bool()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator bool ( ) const
inlineexplicitconstexpr

Definition at line 1602 of file uintwide_t.h.

◆ operator double()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator double ( ) const
inlineexplicitconstexpr

Definition at line 1586 of file uintwide_t.h.

◆ operator float()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator float ( ) const
inlineexplicitconstexpr

Definition at line 1587 of file uintwide_t.h.

◆ operator IntegralType()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename IntegralType , typename = typename std::enable_if<std::is_integral<IntegralType>::value>::type>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator IntegralType ( ) const
inlineexplicitconstexpr

Definition at line 1592 of file uintwide_t.h.

◆ operator long double()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator long double ( ) const
inlineexplicitconstexpr

Definition at line 1585 of file uintwide_t.h.

◆ operator uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned >()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const size_t OtherWidth2, const bool OtherIsSigned, typename = typename std::enable_if<(Width2 != OtherWidth2), uintwide_t<OtherWidth2, LimbType, AllocatorType, OtherIsSigned>>::type>
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator uintwide_t< OtherWidth2, LimbType, AllocatorType, OtherIsSigned > ( ) const
inline

Definition at line 1609 of file uintwide_t.h.

◆ operator uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned >()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool OtherIsSigned, typename = typename std::enable_if<(OtherIsSigned != IsSigned), uintwide_t<Width2, LimbType, AllocatorType, OtherIsSigned>>::type>
WIDE_INTEGER_CONSTEXPR math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > ( ) const
inline

Definition at line 1660 of file uintwide_t.h.

◆ operator!=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator!= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) const -> bool
inlineconstexpr

Definition at line 2039 of file uintwide_t.h.

◆ operator%=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator%= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1810 of file uintwide_t.h.

◆ operator&=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator&= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1902 of file uintwide_t.h.

◆ operator*=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator*= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1733 of file uintwide_t.h.

◆ operator+()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator+ ( ) const -> const uintwide_t &
inline

Definition at line 1679 of file uintwide_t.h.

◆ operator++() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator++ ( ) -> uintwide_t &
inline

Definition at line 1855 of file uintwide_t.h.

◆ operator++() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator++ ( int  ) -> uintwide_t
inline

Definition at line 1859 of file uintwide_t.h.

◆ operator+=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator+= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1682 of file uintwide_t.h.

◆ operator-()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator- ( ) const -> uintwide_t
inline

Definition at line 1680 of file uintwide_t.h.

◆ operator--() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator-- ( ) -> uintwide_t &
inline

Definition at line 1856 of file uintwide_t.h.

◆ operator--() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator-- ( int  ) -> uintwide_t
inline

Definition at line 1860 of file uintwide_t.h.

◆ operator-=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator-= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1712 of file uintwide_t.h.

◆ operator/=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator/= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1766 of file uintwide_t.h.

◆ operator<()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator< ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) const -> bool
inlineconstexpr

Definition at line 2037 of file uintwide_t.h.

◆ operator<<=() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename SignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator<<= ( const SignedIntegralType  n) -> typename std::enable_if<((std::is_integral<SignedIntegralType>::value) && (std::is_signed <SignedIntegralType>::value)), uintwide_t>::type &
inline

Definition at line 1917 of file uintwide_t.h.

◆ operator<<=() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename UnsignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator<<= ( const UnsignedIntegralType  n) -> typename std::enable_if<((std::is_integral<UnsignedIntegralType>::value) && (!std::is_signed <UnsignedIntegralType>::value)), uintwide_t>::type &
inline

Definition at line 1948 of file uintwide_t.h.

◆ operator<=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator<= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) const -> bool
inlineconstexpr

Definition at line 2040 of file uintwide_t.h.

◆ operator=() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool OtherIsSigned, typename std::enable_if<(OtherIsSigned !=IsSigned)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator= ( const uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &  other) -> uintwide_t &
inline

Definition at line 1564 of file uintwide_t.h.

◆ operator=() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const bool OtherIsSigned, typename std::enable_if<(IsSigned !=OtherIsSigned)>::type const * = nullptr>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator= ( uintwide_t< Width2, LimbType, AllocatorType, OtherIsSigned > &&  other) -> uintwide_t &
inline

Definition at line 1577 of file uintwide_t.h.

◆ operator==()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator== ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) const -> bool
inlineconstexpr

Definition at line 2036 of file uintwide_t.h.

◆ operator>()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator> ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) const -> bool
inlineconstexpr

Definition at line 2038 of file uintwide_t.h.

◆ operator>=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator>= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) const -> bool
inlineconstexpr

Definition at line 2041 of file uintwide_t.h.

◆ operator>>=() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename SignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator>>= ( const SignedIntegralType  n) -> typename std::enable_if<((std::is_integral<SignedIntegralType>::value) && (std::is_signed <SignedIntegralType>::value)), uintwide_t>::type &
inline

Definition at line 1972 of file uintwide_t.h.

◆ operator>>=() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<typename UnsignedIntegralType >
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator>>= ( const UnsignedIntegralType  n) -> typename std::enable_if<((std::is_integral<UnsignedIntegralType>::value) && (!std::is_signed <UnsignedIntegralType>::value)), uintwide_t>::type &
inline

Definition at line 2012 of file uintwide_t.h.

◆ operator^=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator^= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1884 of file uintwide_t.h.

◆ operator|=()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator|= ( const uintwide_t< Width2, LimbType, AllocatorType, IsSigned > &  other) -> uintwide_t &
inline

Definition at line 1870 of file uintwide_t.h.

◆ operator~()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::operator~ ( ) -> uintwide_t &
inline

Definition at line 1862 of file uintwide_t.h.

◆ representation() [1/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::representation ( ) -> representation_type &
inline

Definition at line 1674 of file uintwide_t.h.

◆ representation() [2/2]

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_NODISCARD WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::representation ( ) const -> const representation_type &
inline

Definition at line 1675 of file uintwide_t.h.

◆ wr_string()

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
WIDE_INTEGER_CONSTEXPR auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::wr_string ( char *  str_result,
const std::uint_fast8_t  base_rep = 0x10U,
const bool  show_base = true,
const bool  show_pos = false,
const bool  is_uppercase = true,
unsigned_fast_type  field_width = 0U,
const char  fill_char = static_cast<char>('0') 
) const -> bool
inline

Definition at line 2144 of file uintwide_t.h.

Friends And Related Function Documentation

◆ uintwide_t

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
template<const size_t OtherWidth2, typename OtherLimbType , typename OtherAllocatorType , const bool OtherIsSigned>
friend class uintwide_t
friend

Definition at line 1280 of file uintwide_t.h.

Member Data Documentation

◆ my_width2

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr size_t math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::my_width2 = Width2
staticconstexpr

Definition at line 1307 of file uintwide_t.h.

◆ number_of_limbs

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr size_t math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::number_of_limbs
staticconstexpr
Initial value:
=
static_cast<size_t>(my_width2 / static_cast<size_t>(std::numeric_limits<limb_type>::digits))

Definition at line 1310 of file uintwide_t.h.

◆ number_of_limbs_karatsuba_threshold

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr size_t math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::number_of_limbs_karatsuba_threshold = static_cast<size_t>(128U + 1U)
staticconstexpr

Definition at line 1313 of file uintwide_t.h.

◆ wr_string_max_buffer_size_dec

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::wr_string_max_buffer_size_dec
staticconstexpr
Initial value:
=
static_cast<size_t>
(
(
10U
+ static_cast<size_t>((static_cast<std::uintmax_t>(my_width2) * UINTMAX_C(301)) / UINTMAX_C(1000))
)
)

Definition at line 2134 of file uintwide_t.h.

◆ wr_string_max_buffer_size_hex

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::wr_string_max_buffer_size_hex
staticconstexpr
Initial value:
=
static_cast<size_t>
(
(
8U
+ (((my_width2 % 4U) != 0U) ? 1U : 0U)
+ (my_width2 / 4U)
)
)

Definition at line 2124 of file uintwide_t.h.

◆ wr_string_max_buffer_size_oct

template<const size_t Width2, typename LimbType , typename AllocatorType , const bool IsSigned>
constexpr auto math::wide_integer::uintwide_t< Width2, LimbType, AllocatorType, IsSigned >::wr_string_max_buffer_size_oct
staticconstexpr
Initial value:
=
static_cast<size_t>
(
(
8U
+ (((my_width2 % 3U) != 0U) ? 1U : 0U)
+ (my_width2 / 3U)
)
)

Definition at line 2114 of file uintwide_t.h.


The documentation for this class was generated from the following file: