📄 x-cvsweb-markup(48)
字号:
_FP_FRAC_WORD_8(_z,2), 0,_f_f1,_f_f0, \ _FP_FRAC_WORD_8(_z,4),_FP_FRAC_WORD_8(_z,3), \ _FP_FRAC_WORD_8(_z,2)); \ doit(_b_f1, _b_f0, X##_f[0], Y##_f[3]); \ doit(_c_f1, _c_f0, X##_f[3], Y##_f[0]); \ doit(_d_f1, _d_f0, X##_f[1], Y##_f[2]); \ doit(_e_f1, _e_f0, X##_f[2], Y##_f[1]); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3), 0,_b_f1,_b_f0, \ 0,_FP_FRAC_WORD_8(_z,4),_FP_FRAC_WORD_8(_z,3)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3), 0,_c_f1,_c_f0, \ _FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3), 0,_d_f1,_d_f0, \ _FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3), 0,_e_f1,_e_f0, \ _FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4), \ _FP_FRAC_WORD_8(_z,3)); \ doit(_b_f1, _b_f0, X##_f[2], Y##_f[2]); \ doit(_c_f1, _c_f0, X##_f[1], Y##_f[3]); \ doit(_d_f1, _d_f0, X##_f[3], Y##_f[1]); \ doit(_e_f1, _e_f0, X##_f[2], Y##_f[3]); \ doit(_f_f1, _f_f0, X##_f[3], Y##_f[2]); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,6),_FP_FRAC_WORD_8(_z,5), \ _FP_FRAC_WORD_8(_z,4), 0,_b_f1,_b_f0, \ 0,_FP_FRAC_WORD_8(_z,5),_FP_FRAC_WORD_8(_z,4)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,6),_FP_FRAC_WORD_8(_z,5), \ _FP_FRAC_WORD_8(_z,4), 0,_c_f1,_c_f0, \ _FP_FRAC_WORD_8(_z,6),_FP_FRAC_WORD_8(_z,5), \ _FP_FRAC_WORD_8(_z,4)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,6),_FP_FRAC_WORD_8(_z,5), \ _FP_FRAC_WORD_8(_z,4), 0,_d_f1,_d_f0, \ _FP_FRAC_WORD_8(_z,6),_FP_FRAC_WORD_8(_z,5), \ _FP_FRAC_WORD_8(_z,4)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,7),_FP_FRAC_WORD_8(_z,6), \ _FP_FRAC_WORD_8(_z,5), 0,_e_f1,_e_f0, \ 0,_FP_FRAC_WORD_8(_z,6),_FP_FRAC_WORD_8(_z,5)); \ __FP_FRAC_ADD_3(_FP_FRAC_WORD_8(_z,7),_FP_FRAC_WORD_8(_z,6), \ _FP_FRAC_WORD_8(_z,5), 0,_f_f1,_f_f0, \ _FP_FRAC_WORD_8(_z,7),_FP_FRAC_WORD_8(_z,6), \ _FP_FRAC_WORD_8(_z,5)); \ doit(_b_f1, _b_f0, X##_f[3], Y##_f[3]); \ __FP_FRAC_ADD_2(_FP_FRAC_WORD_8(_z,7),_FP_FRAC_WORD_8(_z,6), \ _b_f1,_b_f0, \ _FP_FRAC_WORD_8(_z,7),_FP_FRAC_WORD_8(_z,6)); \ \ /* Normalize since we know where the msb of the multiplicands \ were (bit B), we know that the msb of the of the product is \ at either 2B or 2B-1. */ \ _FP_FRAC_SRS_8(_z, wfracbits-1, 2*wfracbits); \ __FP_FRAC_SET_4(R, _FP_FRAC_WORD_8(_z,3), _FP_FRAC_WORD_8(_z,2), \ _FP_FRAC_WORD_8(_z,1), _FP_FRAC_WORD_8(_z,0)); \ } while (0)#define _FP_MUL_MEAT_4_gmp(wfracbits, R, X, Y) \ do { \ _FP_FRAC_DECL_8(_z); \ \ mpn_mul_n(_z_f, _x_f, _y_f, 4); \ \ /* Normalize since we know where the msb of the multiplicands \ were (bit B), we know that the msb of the of the product is \ at either 2B or 2B-1. */ \ _FP_FRAC_SRS_8(_z, wfracbits-1, 2*wfracbits); \ __FP_FRAC_SET_4(R, _FP_FRAC_WORD_8(_z,3), _FP_FRAC_WORD_8(_z,2), \ _FP_FRAC_WORD_8(_z,1), _FP_FRAC_WORD_8(_z,0)); \ } while (0)/* * Helper utility for _FP_DIV_MEAT_4_udiv: * pppp = m * nnn */#define umul_ppppmnnn(p3,p2,p1,p0,m,n2,n1,n0) \ do { \ UWtype _t; \ umul_ppmm(p1,p0,m,n0); \ umul_ppmm(p2,_t,m,n1); \ __FP_FRAC_ADDI_2(p2,p1,_t); \ umul_ppmm(p3,_t,m,n2); \ __FP_FRAC_ADDI_2(p3,p2,_t); \ } while (0)/* * Division algorithms: */#define _FP_DIV_MEAT_4_udiv(fs, R, X, Y) \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -