7#include "../../../include/lammp/lmmpn.h"
8#include "../../../include/lammp/impl/longlong.h"
13 mp_limb_t a[3] = {numa[0], numa[1], numa[2]};
27 ah = numa[na - 1] >> rshift;
29 al = (numa[na - 1] << shift) | (t >> rshift);
91 ah = numa[na - 1] >> rshift;
93 al = (numa[na - 1] << shift) | (t >> rshift);
152 b1 = (
b1 << shift) | (
b0 >> rshift);
154 a2 = numa[1] >> rshift;
155 a1 = (numa[1] << shift) | (numa[0] >> rshift);
156 a0 = (numa[0] << shift);
159 numb[0] = (
r0 >> shift) | (
r1 << rshift);
160 numb[1] =
r1 >> shift;
176 b1 = (
b1 << shift) | (
b0 >> rshift);
179 a2 = numa[na - 1] >> rshift;
180 a1 = (numa[na - 1] << shift) | (numa[na - 2] >> rshift);
181 a0 = (numa[na - 2] << shift) | (numa[na - 3] >> rshift);
187 a0 = (numa[na] << shift) | (numa[na - 1] >> rshift);
193 a0 = (numa[na] << shift);
195 numb[0] = (
r0 >> shift) | (
r1 << rshift);
196 numb[1] =
r1 >> shift;
231 b1 = (
b1 << shift) | (
b0 >> rshift);
233 a2 = numa[1] >> rshift;
234 a1 = (numa[1] << shift) | (numa[0] >> rshift);
235 a0 = (numa[0] << shift);
240 numb[0] = (
r0 >> shift) | (
r1 << rshift);
241 numb[1] =
r1 >> shift;
268 b1 = (
b1 << shift) | (
b0 >> rshift);
271 a2 = numa[na - 1] >> rshift;
272 a1 = (numa[na - 1] << shift) | (numa[na - 2] >> rshift);
273 a0 = (numa[na - 2] << shift) | (numa[na - 3] >> rshift);
280 a0 = (numa[na] << shift) | (numa[na - 1] >> rshift);
287 a0 = (numa[na] << shift);
290 numb[0] = (
r0 >> shift) | (
r1 << rshift);
291 numb[1] =
r1 >> shift;
326 b1 = (
b1 << shift) | (
b0 >> rshift);
329 a2 = numa[na - 1] >> rshift;
330 a1 = (numa[na - 1] << shift) | (numa[na - 2] >> rshift);
331 a0 = (numa[na - 2] << shift) | (numa[na - 3] >> rshift);
337 a0 = (numa[na] << shift) | (numa[na - 1] >> rshift);
343 a0 = (numa[na] << shift);
345 numb[0] = (
r0 >> shift) | (
r1 << rshift);
346 numb[1] =
r1 >> shift;
374 mp_limb_t t = numa[na - 2], q = 0, r = 0;
mp_limb_t lmmp_div_3_2_(mp_ptr restrict numa, mp_srcptr restrict numb, mp_limb_t inv21)
mp_limb_t lmmp_mod_1_(mp_srcptr numa, mp_size_t na, mp_limb_t x)
单精度数取余
void lmmp_mod_2_(mp_srcptr numa, mp_size_t na, mp_ptr numb)
双精度数取余 (除数为2个limb)
const mp_limb_t * mp_srcptr
mp_limb_t lmmp_div_1_s_(mp_ptr dstq, mp_ptr numa, mp_size_t na, mp_limb_t x)
单精度数除法(除数为1个limb)
mp_limb_t lmmp_div_1_(mp_ptr dstq, mp_srcptr numa, mp_size_t na, mp_limb_t x)
单精度数除法
int lmmp_leading_zeros_(mp_limb_t x)
计算一个单精度数(limb)中前导零的个数
void lmmp_div_2_(mp_ptr dstq, mp_srcptr numa, mp_size_t na, mp_ptr numb)
双精度数除法 (除数为2个limb)
mp_limb_t lmmp_div_2_s_(mp_ptr dstq, mp_ptr numa, mp_size_t na, mp_srcptr numb)
双精度数除法(除数为2个limb)
mp_limb_t lmmp_inv_1_(mp_limb_t x)
1阶逆元计算 (inv1)
mp_limb_t lmmp_inv_2_1_(mp_limb_t xh, mp_limb_t xl)
2-1阶逆元计算 (inv21)
#define _u128sub(r, x, y)
#define _udiv_qrnnd_preinv(q, r, nh, nl, d, di)
#define _udiv_qr_3by2(q, r1, r0, n2, n1, n0, d1, d0, dinv)