|
LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
|
#include "../../../include/lammp/lmmpn.h"
shr.c 的引用(Include)关系图:函数 | |
| mp_limb_t | lmmp_shr1add_n_ (mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n) |
| 加法后右移1位 [dst,n] = ([numa,n] + [numb,n]) >> 1 | |
| mp_limb_t | lmmp_shr1add_nc_ (mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n, mp_limb_t c) |
| 带进位加法后右移1位 [dst,n] = ([numa,n] + [numb,n] + c) >> 1 | |
| mp_limb_t | lmmp_shr1sub_n_ (mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n) |
| 减法后右移1位 [dst,n] = ([numa,n] - [numb,n]) >> 1 | |
| mp_limb_t | lmmp_shr1sub_nc_ (mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n, mp_limb_t c) |
| 带借位减法后右移1位 [dst,n] = ([numa,n] - [numb,n] - c) >> 1 | |
| mp_limb_t | lmmp_shr_ (mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_size_t shr) |
| 大数右移操作 [dst,na] = [numa,na] >> shr,dst的高shr位填充0 | |
| mp_limb_t | lmmp_shr_c_ (mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_size_t shr, mp_limb_t c) |
| 带进位的大数右移操作 [dst,na] = [numa,na]>>shr,dst的高shr位填充c的高shr位 | |
加法后右移1位 [dst,n] = ([numa,n] + [numb,n]) >> 1
| dst | 结果输出指针 |
| numa | 第一个加数指针 |
| numb | 第二个加数指针 |
| n | limb长度 |
引用了 LIMB_BITS.
被这些函数引用 lmmp_mul_toom32_(), lmmp_toom_interp5_(), lmmp_toom_interp6_() , 以及 lmmp_toom_interp7_().
这是这个函数的调用关系图:带进位加法后右移1位 [dst,n] = ([numa,n] + [numb,n] + c) >> 1
| dst | 结果输出指针 |
| numa | 第一个加数指针 |
| numb | 第二个加数指针 |
| n | limb长度 |
| c | 初始进位值 [0|1] |
引用了 LIMB_BITS.
被这些函数引用 lmmp_mul_fft_(), lmmp_mul_fft_cache_() , 以及 lmmp_mullo_fft_().
这是这个函数的调用关系图:减法后右移1位 [dst,n] = ([numa,n] - [numb,n]) >> 1
| dst | 结果输出指针 |
| numa | 被减数指针 |
| numb | 减数指针 |
| n | 操作数的位数(limb数量) |
引用了 LIMB_BITS.
被这些函数引用 lmmp_mul_toom32_(), lmmp_toom_interp5_(), lmmp_toom_interp6_() , 以及 lmmp_toom_interp7_().
这是这个函数的调用关系图:带借位减法后右移1位 [dst,n] = ([numa,n] - [numb,n] - c) >> 1
| dst | 结果输出指针 |
| numa | 被减数指针 |
| numb | 减数指针 |
| n | limb长度 |
| c | 初始借位值 [0|1] |
引用了 LIMB_BITS.
大数右移操作 [dst,na] = [numa,na] >> shr,dst的高shr位填充0
| dst | 结果输出指针 |
| numa | 源操作数指针 |
| na | limb长度 |
| shr | 右移的位数 (0~63) |
被这些函数引用 lmmp_bninv_(), lmmp_div_(), lmmp_fft_extract_coef_(), lmmp_invsqrt_newton_(), lmmp_sqrt_(), lmmp_sqrt_newton_(), lmmp_to_str_divide_(), lmmp_toom_interp6_() , 以及 lmmp_toom_interp7_().
这是这个函数的调用关系图:带进位的大数右移操作 [dst,na] = [numa,na]>>shr,dst的高shr位填充c的高shr位
| dst | 结果输出指针 |
| numa | 源操作数指针 |
| na | limb长度 |
| shr | 右移的位数 (0~63) |
| c | 进位值(其低(64-shr)位必须为0) |
被这些函数引用 lmmp_ifft_bfy_(), lmmp_inv_() , 以及 lmmp_sqrt_divide_().
这是这个函数的调用关系图: