apytypes_mp.h
¶
Functions
-
apy_limb_t apy_inplace_addition(apy_limb_t*, const std::size_t, const apy_limb_t*, const std::size_t)¶
Add two limb vectors in place: a += b, where the len(a) >= len(b)
-
static inline apy_limb_t apy_addition_same_length(apy_limb_t *dest, const apy_limb_t *src0, const apy_limb_t *src1, const std::size_t limbs)¶
-
static inline apy_limb_t apy_inplace_addition_single_limb(apy_limb_t *dest, const std::size_t limbs, const apy_limb_t src)¶
Add a single limb to a limb vector in place: a += b.
-
static inline apy_limb_t apy_inplace_add_one_lsb(apy_limb_t *dest, const std::size_t limbs)¶
Add a single one to a limb vector in place: a++.
-
static inline apy_limb_t apy_inplace_addition_same_length(apy_limb_t *dest, const apy_limb_t *src, const std::size_t limbs)¶
Add two limb vectors of the same length in place: a += b, where the len(a) == len(b)
-
static inline apy_limb_t apy_inplace_negate(apy_limb_t *dest, const std::size_t limbs)¶
Negate a limb vector in place: a = -a.
-
static inline apy_limb_t apy_inplace_subtraction_single_limb(apy_limb_t *dest, const std::size_t limbs, const apy_limb_t src)¶
-
static inline apy_limb_t apy_inplace_subtraction_same_length(apy_limb_t *dest, const apy_limb_t *src, const std::size_t limbs)¶
-
static inline apy_limb_t apy_inplace_reversed_subtraction_same_length(apy_limb_t *dest, const apy_limb_t *src, const std::size_t limbs)¶
-
static inline apy_limb_t apy_subtraction_same_length(apy_limb_t *dest, const apy_limb_t *src0, const apy_limb_t *src1, const std::size_t limbs)¶
-
apy_limb_t apy_inplace_left_shift(apy_limb_t*, const std::size_t, unsigned int)¶
-
apy_limb_t apy_left_shift(apy_limb_t*, const apy_limb_t*, const std::size_t, const unsigned int)¶
-
apy_limb_t apy_inplace_right_shift(apy_limb_t*, const std::size_t, unsigned int)¶
-
apy_limb_t apy_unsigned_multiplication(apy_limb_t*, const apy_limb_t*, const std::size_t, const apy_limb_t*, const std::size_t)¶
-
void apy_unsigned_division(apy_limb_t*, apy_limb_t*, const std::size_t, const apy_limb_t*, const std::size_t)¶
Variables
-
constexpr std::size_t APY_LIMB_SIZE_BYTES = sizeof(apy_limb_t)¶
-
constexpr apy_limb_t APY_NUMBER_MASK = ~((apy_limb_t)0)¶
-
constexpr std::size_t APY_LIMB_SIZE_BITS = POSIX_CHAR_BITS * APY_LIMB_SIZE_BYTES¶
-
constexpr std::size_t APY_HALF_LIMB_SIZE_BITS = APY_LIMB_SIZE_BITS / 2¶
-
constexpr apy_limb_t APY_LOWER_LIMB_MASK = ((apy_limb_t)1 << APY_HALF_LIMB_SIZE_BITS) - 1¶
-
constexpr apy_limb_t endian_test = (((apy_limb_t)1) << (APY_LIMB_SIZE_BITS - 7)) - 1¶
-
constexpr std::size_t NIBBLES_PER_LIMB = 2 * APY_LIMB_SIZE_BYTES¶
-
constexpr std::size_t BITS_PER_NIBBLE = 4¶
-
constexpr apy_limb_t APY_LIMB_MSBWEIGHT = ((apy_limb_t)1 << (APY_LIMB_SIZE_BITS - 1))¶
-
class APyDivInverse¶
Public Functions
-
explicit APyDivInverse(const apy_limb_t*, std::size_t)¶
Constructor from limb vector.
Public Members
-
unsigned norm_shift¶
Normalization shift count.
-
apy_limb_t norm_denominator_1¶
Normalized denominator (norm_denominator_0 unused for single denominator limb).
-
apy_limb_t norm_denominator_0¶
-
apy_limb_t inverse¶
Inverse, for 2/1 or 3/2.
Private Functions
-
apy_limb_t compute_3by2_inverse(apy_limb_t, apy_limb_t)¶
Compute the 3/2 (or 2/1) inverse.
-
explicit APyDivInverse(const apy_limb_t*, std::size_t)¶