|
LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
|
toom_interp.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:枚举 | |
| enum | toom6_flags { toom6_all_pos = 0 , toom6_vm1_neg = 1 , toom6_vm2_neg = 2 } |
| enum | toom7_flags { toom7_w1_neg = 1 , toom7_w3_neg = 2 } |
函数 | |
| int | lmmp_toom_eval_dgr3_pm1_ (mp_ptr xp1, mp_ptr xm1, mp_srcptr xp, mp_size_t n, mp_size_t x3n, mp_ptr tp) |
| Toom-3 专用:3次多项式在 x = +1 和 x = -1 处求值 计算 P(+1) 和 P(-1),其中 P(x) 是一个3次多项式(4段系数)。 | |
| int | lmmp_toom_eval_dgr3_pm2_ (mp_ptr xp2, mp_ptr xm2, mp_srcptr xp, mp_size_t n, mp_size_t x3n, mp_ptr tp) |
| Toom-3 专用:3次多项式在 x = +2 和 x = -2 处求值 计算 P(+2) 和 P(-2),其中 P(x) 是一个3次多项式(4段系数)。 | |
| int | lmmp_toom_eval_pm1_ (mp_ptr xp1, mp_ptr xm1, unsigned k, mp_srcptr xp, mp_size_t n, mp_size_t hn, mp_ptr tp) |
| 通用高阶 Toom 求值:k次多项式在 x = +1 和 x = -1 处求值 | |
| int | lmmp_toom_eval_pm2_ (mp_ptr xp2, mp_ptr xm2, unsigned k, mp_srcptr xp, mp_size_t n, mp_size_t hn, mp_ptr tp) |
| 通用高阶 Toom 求值:k次多项式在 x = +2 和 x = -2 处求值 | |
| void | lmmp_toom_interp5_ (mp_ptr dst, mp_ptr v2, mp_ptr vm1, mp_size_t n, mp_size_t spt, int vm1_neg, mp_limb_t vinf0) |
| Toom插值计算(5点插值),用于Toom-33和Toom-42乘法算法 | |
| void | lmmp_toom_interp6_ (mp_ptr dst, mp_size_t n, enum toom6_flags flags, mp_ptr w4, mp_ptr w2, mp_ptr w1, mp_size_t w0n) |
| Toom插值计算(6点插值):用于Toom-43和Toom-52 乘法算法 | |
| void | lmmp_toom_interp7_ (mp_ptr dst, mp_size_t n, enum toom7_flags flags, mp_ptr w1, mp_ptr w3, mp_ptr w4, mp_ptr w5, mp_size_t w6n, mp_ptr tp) |
| Toom插值计算(7点插值):用于Toom-44、Toom-53、Toom-62 乘法算法 | |
| enum toom6_flags |
| enum toom7_flags |
| int lmmp_toom_eval_dgr3_pm1_ | ( | mp_ptr | xp1, |
| mp_ptr | xm1, | ||
| mp_srcptr | xp, | ||
| mp_size_t | n, | ||
| mp_size_t | x3n, | ||
| mp_ptr | tp | ||
| ) |
Toom-3 专用:3次多项式在 x = +1 和 x = -1 处求值 计算 P(+1) 和 P(-1),其中 P(x) 是一个3次多项式(4段系数)。
| xp1 | 输出:P(+1) 的结果(n+1 个 limbs 空间) |
| xm1 | 输出:P(-1) 的结果(n+1 个 limbs 空间) |
| xp | 输入:多项式系数数组(共4段,每段 n limbs) |
| n | 输入:每段完整系数的 limb 长度 |
| x3n | 输入:最后一段系数的实际长度(通常等于 n) |
| tp | 临时缓存空间(至少 n+1 limbs) |
在文件 mul_toom_eval.c 第 9 行定义.
引用了 lmmp_add_(), lmmp_add_n_(), lmmp_add_n_sub_n_(), lmmp_cmp_(), lmmp_debug_assert, lmmp_param_assert , 以及 tp.
被这些函数引用 lmmp_mul_toom43_(), lmmp_mul_toom44_() , 以及 lmmp_sqr_toom4_().
函数调用图:
这是这个函数的调用关系图:| int lmmp_toom_eval_dgr3_pm2_ | ( | mp_ptr | xp2, |
| mp_ptr | xm2, | ||
| mp_srcptr | xp, | ||
| mp_size_t | n, | ||
| mp_size_t | x3n, | ||
| mp_ptr | tp | ||
| ) |
Toom-3 专用:3次多项式在 x = +2 和 x = -2 处求值 计算 P(+2) 和 P(-2),其中 P(x) 是一个3次多项式(4段系数)。
| xp2 | 输出:P(+2) 的结果(n+1 个 limbs 空间) |
| xm2 | 输出:P(-2) 的结果(n+1 个 limbs 空间) |
| xp | 输入:多项式系数数组(共4段,每段 n limbs) |
| n | 输入:每段完整系数的 limb 长度 |
| x3n | 输入:最后一段系数的实际长度 |
| tp | 临时缓存空间(至少 n+1 limbs) |
在文件 mul_toom_eval.c 第 29 行定义.
引用了 lmmp_add_(), lmmp_add_n_(), lmmp_add_n_sub_n_(), lmmp_cmp_(), lmmp_debug_assert, lmmp_param_assert, lmmp_shl_() , 以及 tp.
被这些函数引用 lmmp_mul_toom43_(), lmmp_mul_toom44_() , 以及 lmmp_sqr_toom4_().
函数调用图:
这是这个函数的调用关系图:| int lmmp_toom_eval_pm1_ | ( | mp_ptr | xp1, |
| mp_ptr | xm1, | ||
| unsigned | k, | ||
| mp_srcptr | xp, | ||
| mp_size_t | n, | ||
| mp_size_t | hn, | ||
| mp_ptr | tp | ||
| ) |
通用高阶 Toom 求值:k次多项式在 x = +1 和 x = -1 处求值
| xp1 | 输出:P(+1) 的结果(n+1 limbs) |
| xm1 | 输出:P(-1) 的结果(n+1 limbs) |
| k | 输入:多项式次数(也是完整段的数量) |
| xp | 输入:多项式系数数组 |
| n | 输入:每段完整系数的 limb 长度 |
| hn | 输入:最后一段系数的实际长度 |
| tp | 临时缓存空间(n+1 limbs) |
在文件 mul_toom_eval.c 第 60 行定义.
引用了 k, lmmp_add_(), lmmp_add_n_(), lmmp_add_n_sub_n_(), lmmp_cmp_(), lmmp_debug_assert, lmmp_param_assert , 以及 tp.
被这些函数引用 lmmp_mul_toom52_(), lmmp_mul_toom53_(), lmmp_mul_toom62_(), lmmp_mul_toom62_cache_() , 以及 lmmp_mul_toom62_cache_init_().
函数调用图:
这是这个函数的调用关系图:| int lmmp_toom_eval_pm2_ | ( | mp_ptr | xp2, |
| mp_ptr | xm2, | ||
| unsigned | k, | ||
| mp_srcptr | xp, | ||
| mp_size_t | n, | ||
| mp_size_t | hn, | ||
| mp_ptr | tp | ||
| ) |
通用高阶 Toom 求值:k次多项式在 x = +2 和 x = -2 处求值
| xp2 | 输出:P(+2) 的结果(n+1 limbs) |
| xm2 | 输出:P(-2) 的结果(n+1 limbs) |
| k | 输入:多项式次数 |
| xp | 输入:多项式系数数组 |
| n | 输入:每段完整系数的 limb 长度 |
| hn | 输入:最后一段系数的实际长度 |
| tp | 临时缓存空间(n+1 limbs) |
在文件 mul_toom_eval.c 第 107 行定义.
引用了 DO_addlsh2, k, LIMB_BITS, lmmp_add_1_(), lmmp_add_n_sub_n_(), lmmp_cmp_(), lmmp_debug_assert, lmmp_param_assert, lmmp_shl_() , 以及 tp.
被这些函数引用 lmmp_mul_toom52_(), lmmp_mul_toom53_(), lmmp_mul_toom62_(), lmmp_mul_toom62_cache_() , 以及 lmmp_mul_toom62_cache_init_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_toom_interp5_ | ( | mp_ptr | dst, |
| mp_ptr | v2, | ||
| mp_ptr | vm1, | ||
| mp_size_t | n, | ||
| mp_size_t | spt, | ||
| int | vm1_neg, | ||
| mp_limb_t | vinf0 | ||
| ) |
Toom插值计算(5点插值),用于Toom-33和Toom-42乘法算法
| dst | 输出结果缓冲区,存储插值计算结果 v(0)储存在[dst,2n],v(1)储存在[dst+2n,2n] |
| v2 | v(2)插值点值,长度为 2n+1 |
| vm1 | v(-1)插值点值,长度为 2n+1 |
| n | 操作数的 limb 长度 |
| spt | 系数r4的长度 |
| vm1_neg | 符号标记:v(-1)是否为负数(1表示负,0表示正) |
| vinf0 | 无穷远点插值的低64位值 |
在文件 mul_toom_interp5.c 第 10 行定义.
引用了 lmmp_add_n_(), lmmp_dec_1, lmmp_divexact_by3_(), lmmp_inc_1, lmmp_shl_(), lmmp_shr1add_n_(), lmmp_shr1sub_n_(), lmmp_sub_n_(), r1, r3, v0, v1, v2, vinf , 以及 vm1.
被这些函数引用 lmmp_mul_toom33_(), lmmp_mul_toom42_(), lmmp_mul_toom42_cache_(), lmmp_mul_toom42_cache_init_() , 以及 lmmp_sqr_toom3_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_toom_interp6_ | ( | mp_ptr | dst, |
| mp_size_t | n, | ||
| enum toom6_flags | flags, | ||
| mp_ptr | w4, | ||
| mp_ptr | w2, | ||
| mp_ptr | w1, | ||
| mp_size_t | w0n | ||
| ) |
Toom插值计算(6点插值):用于Toom-43和Toom-52 乘法算法
| dst | 输出:最终乘积结果缓冲区(5n + w0n limbs) w5 储存在[dst,2n], w3 储存在[dst+2n,2n+1], w0 储存在[dst+5n,w0n]. |
| n | 输入:Toom-6 拆分后每段标准 limb 长度 |
| flags | 输入:Toom-6 插值符号标志位(控制正负号运算)
|
| w4 | 输入/临时:点值 W4 缓冲区(2n+1 limbs) |
| w2 | 输入/临时:点值 W2 缓冲区(2n+1 limbs) |
| w1 | 输入/临时:点值 W1 缓冲区(2n+1 limbs) |
| w0n | 输入:最低位段 W0 的实际 limb 长度(0 < w0n <= 2n) |
在文件 mul_toom_interp6.c 第 39 行定义.
引用了 lmmp_add_n_(), lmmp_dec_1, lmmp_divexact_by3_(), lmmp_inc_1, lmmp_param_assert, lmmp_shl_(), lmmp_shr1add_n_(), lmmp_shr1sub_n_(), lmmp_shr_(), lmmp_sub_n_(), toom6_vm1_neg, toom6_vm2_neg, w0, w2, w3 , 以及 w5.
被这些函数引用 lmmp_mul_toom43_() , 以及 lmmp_mul_toom52_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_toom_interp7_ | ( | mp_ptr | dst, |
| mp_size_t | n, | ||
| enum toom7_flags | flags, | ||
| mp_ptr | w1, | ||
| mp_ptr | w3, | ||
| mp_ptr | w4, | ||
| mp_ptr | w5, | ||
| mp_size_t | w6n, | ||
| mp_ptr | tp | ||
| ) |
Toom插值计算(7点插值):用于Toom-44、Toom-53、Toom-62 乘法算法
| dst | 输出结果缓冲区,存储插值计算结果(6*n + w6n limbs) w0 储存在[dst,2n], w2 储存在[dst+2n,2n+1], w6 储存在[dst+6n,w6n]. |
| n | 输入:Toom-7 拆分后每段标准 limb 长度 |
| flags | 输入:Toom-7 符号标志位,控制插值中的正负号运算
|
| w1 | 输入/临时:点值 W1 缓冲区(2n+1 limbs) |
| w3 | 输入/临时:点值 W3 缓冲区(2n+1 limbs) |
| w4 | 输入/临时:点值 W4 缓冲区(2n+1 limbs) |
| w5 | 输入/临时:点值 W5 缓冲区(2n+1 limbs) |
| w6n | 输入:最低位段 W6 的实际 limb 长度 (0 < w6n ≤ 2n) |
| tp | 临时缓存空间(2*n+1 limbs) |
在文件 mul_toom_interp7.c 第 45 行定义.
引用了 LIMB_MAX, lmmp_add_n_(), lmmp_addmul_1_(), lmmp_assert, lmmp_debug_assert, lmmp_divexact_by15_(), lmmp_divexact_by3_(), lmmp_divexact_by9_(), lmmp_inc_1, lmmp_param_assert, lmmp_shl_(), lmmp_shr1add_n_(), lmmp_shr1sub_n_(), lmmp_shr_(), lmmp_sub_(), lmmp_sub_n_(), lmmp_submul_1_(), toom7_w1_neg, toom7_w3_neg, tp, w0, w2, w3, w5 , 以及 w6.
被这些函数引用 lmmp_mul_toom44_(), lmmp_mul_toom53_(), lmmp_mul_toom62_(), lmmp_mul_toom62_cache_(), lmmp_mul_toom62_cache_init_() , 以及 lmmp_sqr_toom4_().
函数调用图:
这是这个函数的调用关系图: