|
LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
|
#include "../../include/lammp/impl/tmp_alloc.h"#include "../../include/lammp/impl/mparam.h"#include "../../include/lammp/lmmpn.h"
inv.c 的引用(Include)关系图:函数 | |
| void | lmmp_inv_ (mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_size_t nf) |
| 大数求逆操作 [dst,na+nf+1] = (B^(2*(na+nf)) - 1) / ([numa,na]*B^nf) + [0|-1] | |
| void | lmmp_inv_basecase_ (mp_ptr dst, mp_srcptr numa, mp_size_t na) |
| 近似逆元计算 | |
| void | lmmp_invappr_ (mp_ptr dst, mp_srcptr numa, mp_size_t na) |
| 近似逆元计算 (invappr) | |
| void | lmmp_invappr_newton_ (mp_ptr dst, mp_srcptr numa, mp_size_t na) |
| 近似逆元计算(牛顿迭代法) | |
大数求逆操作 [dst,na+nf+1] = (B^(2*(na+nf)) - 1) / ([numa,na]*B^nf) + [0|-1]
| dst | 逆元结果输出指针 |
| numa | 源操作数指针 |
| na | 操作数的 limb 长度 |
| nf | 精度因子 |
引用了 LIMB_BITS, lmmp_copy, lmmp_invappr_(), lmmp_leading_zeros_(), lmmp_param_assert, lmmp_shl_(), lmmp_shr_c_(), lmmp_zero, TALLOC_TYPE, TEMP_DECL , 以及 TEMP_FREE.
函数调用图:近似逆元计算
| dst | 输出结果缓冲区,长度为na |
| numa | 输入操作数,长度为na |
| na | 输入操作数的 limb 长度 |
引用了 DIV_DIVIDE_THRESHOLD, LIMB_B_2, LIMB_MAX, lmmp_div_2_s_(), lmmp_div_basecase_(), lmmp_div_divide_(), lmmp_inv_1_(), lmmp_inv_2_1_(), lmmp_not_(), lmmp_param_assert, TALLOC_TYPE, TEMP_DECL , 以及 TEMP_FREE.
被这些函数引用 lmmp_invappr_() , 以及 lmmp_invappr_newton_().
函数调用图:
这是这个函数的调用关系图:近似逆元计算 (invappr)
| dst | 输出结果缓冲区,长度为na |
| numa | 输入操作数,长度为na |
| na | 输入操作数的 limb 长度 |
引用了 INV_NEWTON_THRESHOLD, lmmp_inv_basecase_() , 以及 lmmp_invappr_newton_().
被这些函数引用 lmmp_inv_() , 以及 lmmp_inv_prediv_().
函数调用图:
这是这个函数的调用关系图:近似逆元计算(牛顿迭代法)
| dst | 输出结果缓冲区,长度为na |
| numa | 输入操作数,长度为na |
| na | 输入操作数的 limb 长度 |
引用了 INV_MODM_THRESHOLD, INV_NEWTON_THRESHOLD, LIMB_B_2, LIMB_BITS, LIMB_MAX, lmmp_add_n_(), lmmp_add_nc_(), lmmp_assert, lmmp_cmp_(), lmmp_dec, lmmp_dec_1, lmmp_fft_next_size_(), lmmp_inc, lmmp_inv_basecase_(), lmmp_mul_(), lmmp_mul_mersenne_(), lmmp_mul_n_(), lmmp_not_(), lmmp_param_assert, lmmp_sub_n_(), lmmp_sub_nc_(), TALLOC_TYPE, TEMP_DECL , 以及 TEMP_FREE.
被这些函数引用 lmmp_invappr_().
函数调用图:
这是这个函数的调用关系图: