⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bn_mp_reduce_2k.c

📁 tommath库
💻 C
字号:
#include <tommath.h>#ifdef BN_MP_REDUCE_2K_C/* LibTomMath, multiple-precision integer library -- Tom St Denis * * LibTomMath is a library that provides multiple-precision * integer arithmetic as well as number theoretic functionality. * * The library was designed directly after the MPI library by * Michael Fromberger but has been written from scratch with * additional optimizations in place. * * The library is free for all purposes without any express * guarantee it works. * * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org *//* reduces a modulo n where n is of the form 2**p - d */intmp_reduce_2k(mp_int *a, mp_int *n, mp_digit d){   mp_int q;   int    p, res;      if ((res = mp_init(&q)) != MP_OKAY) {      return res;   }      p = mp_count_bits(n);    top:   /* q = a/2**p, a = a mod 2**p */   if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {      goto ERR;   }      if (d != 1) {      /* q = q * d */      if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) {          goto ERR;      }   }      /* a = a + q */   if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {      goto ERR;   }      if (mp_cmp_mag(a, n) != MP_LT) {      s_mp_sub(a, n, a);      goto top;   }   ERR:   mp_clear(&q);   return res;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -