@@ -141,6 +141,39 @@ Arithmetic operations
141141 `c ` and all elements of ``vec `` are assumed to be less than ``mod.n ``.
142142
143143
144+ Arithmetic operations without reduction
145+ --------------------------------------------------------------------------------
146+
147+ The following functions set `r_i \gets r_i + v_i \cdot c `,
148+ `0 \le i < len `, with `r ` given by ``res `` and `v ` given by ``vec ``,
149+ without performing modular reduction,
150+ with specific limitations on the inputs.
151+
152+ .. function :: void _nmod_vec_nored_scalar_addmul_halflimb(nn_ptr res, nn_srcptr vec, slong len, ulong c)
153+
154+ Assumes that `v_i ` and `c ` are half-limb values and that
155+ `r_i + v_i \cdot c ` does not overflow a limb.
156+
157+ .. function :: void _nmod_vec_nored_ll_scalar_addmul_halflimb(nn_ptr res, nn_srcptr vec, slong len, ulong c)
158+
159+ The array ``res `` contains ``2 len `` limbs, representing double-limb
160+ integers contiguously.
161+ Assumes that `v_i ` and `c ` are half-limb values and that
162+ `r_i + v_i \cdot c ` does not overflow two limbs.
163+
164+ .. function :: void _nmod_vec_nored_ll_scalar_addmul(nn_ptr res, nn_srcptr vec, slong len, ulong c)
165+
166+ The array ``res `` contains ``2 len `` limbs, representing double-limb
167+ integers contiguously.
168+ Assumes that `r_i + v_i \cdot c ` does not overflow two limbs.
169+
170+ .. function :: void _nmod_vec_nored_lll_scalar_addmul(nn_ptr res, nn_srcptr vec, slong len, ulong c)
171+
172+ The array ``res `` contains ``3 len `` limbs, representing triple-limb
173+ integers contiguously.
174+ Assumes that `r_i + v_i \cdot c ` does not overflow three limbs.
175+
176+
144177Dot products
145178--------------------------------------------------------------------------------
146179
0 commit comments