apycfixed_util.h
¶
Functions
-
static inline void complex_multiplication_1_1_2(apy_limb_t *res, const apy_limb_t *src0, const apy_limb_t *src1)¶
-
template<typename RANDOM_ACCESS_ITERATOR_IN1, typename RANDOM_ACCESS_ITERATOR_IN2, typename RANDOM_ACCESS_ITERATOR_OUT, typename RANDOM_ACCESS_ITERATOR_INOUT>
static inline void complex_fixed_point_product(RANDOM_ACCESS_ITERATOR_IN1 src1, RANDOM_ACCESS_ITERATOR_IN2 src2, RANDOM_ACCESS_ITERATOR_OUT dst, std::size_t src1_limbs, std::size_t src2_limbs, std::size_t dst_limbs, RANDOM_ACCESS_ITERATOR_INOUT op1_abs, RANDOM_ACCESS_ITERATOR_INOUT op2_abs, RANDOM_ACCESS_ITERATOR_INOUT prod_imm)¶ Iterator-based multi-limb two’s complement complex-valued fixed-point multiplication. The scratch vector
prod_imm
must have space for at least2 + 2 * src1_limbs + 2 * src2_limbs
limbs. The scratch vectorsop1_abs
andop2_abs
must have space for at leastsrc1_limbs
andsrc2_limbs
limbs, respectively. No overlap betweenprod_imm
andop[12]_abs
allowed. No overlap betweenprod_imm
anddst
allowed.
-
template<typename RANDOM_ACCESS_ITERATOR_IN1, typename RANDOM_ACCESS_ITERATOR_IN2, typename RANDOM_ACCESS_ITERATOR_OUT, typename RANDOM_ACCESS_ITERATOR_INOUT>
static inline void complex_fixed_point_division(RANDOM_ACCESS_ITERATOR_IN1 src1, RANDOM_ACCESS_ITERATOR_IN2 src2, RANDOM_ACCESS_ITERATOR_OUT dst, std::size_t src1_limbs, std::size_t src2_limbs, std::size_t dst_limbs, std::size_t src2_bits, std::size_t div_limbs, RANDOM_ACCESS_ITERATOR_INOUT op1_abs, RANDOM_ACCESS_ITERATOR_INOUT op2_abs, RANDOM_ACCESS_ITERATOR_INOUT prod_imm, RANDOM_ACCESS_ITERATOR_INOUT den_imm, RANDOM_ACCESS_ITERATOR_INOUT num_imm, RANDOM_ACCESS_ITERATOR_INOUT qte_imm)¶ Iterator-based multi-limb two’s complement complex-valued fixed-point division. The scratch vector
prod_imm
must have space for at least2 + 2 * src1_limbs + 2 * src2_limbs
limbs. The scratch vectorsop1_abs
andop2_abs
must have space for at leastsrc1_limbs
andsrc2_limbs
limbs, respectively. No overlap betweenprod_imm
andop[12]_abs
allowed. No overlap betweenprod_imm
anddst
allowed.
-
struct ComplexFixedPointInnerProduct¶
Public Types
Public Functions
-
inline explicit ComplexFixedPointInnerProduct(const APyFixedSpec &src1_spec, const APyFixedSpec &src2_spec, const APyFixedSpec &dst_spec, const std::optional<APyFixedAccumulatorOption> acc_mode)¶
Private Functions
-
inline void inner_product_one_limb_src_one_limb_dst(CIt src1, CIt src2, It dst, std::size_t N, std::size_t M, std::size_t DST_STEP) const¶
Private Members
-
void (ComplexFixedPointInnerProduct::* f)(CIt src1, CIt src2, It dst, std::size_t N, std::size_t M, std::size_t DST_STEP) const¶
-
std::size_t src1_limbs¶
-
std::size_t src2_limbs¶
-
std::size_t dst_limbs¶
-
std::size_t product_limbs¶
-
std::optional<APyFixedAccumulatorOption> acc_mode¶
-
int product_bits¶
-
int product_int_bits¶
-
mutable ScratchVector<apy_limb_t, 8> op1_abs¶
-
mutable ScratchVector<apy_limb_t, 8> op2_abs¶
-
mutable ScratchVector<apy_limb_t, 16> product¶
-
mutable ScratchVector<apy_limb_t, 16> prod_imm¶
-
inline explicit ComplexFixedPointInnerProduct(const APyFixedSpec &src1_spec, const APyFixedSpec &src2_spec, const APyFixedSpec &dst_spec, const std::optional<APyFixedAccumulatorOption> acc_mode)¶