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

📄 bn_mp_mul_d.c

📁 tommath库
💻 C
字号:
#include <tommath.h>#ifdef BN_MP_MUL_D_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 *//* multiply by a digit */intmp_mul_d (mp_int * a, mp_digit b, mp_int * c){  mp_digit u, *tmpa, *tmpc;  mp_word  r;  int      ix, res, olduse;  /* make sure c is big enough to hold a*b */  if (c->alloc < a->used + 1) {    if ((res = mp_grow (c, a->used + 1)) != MP_OKAY) {      return res;    }  }  /* get the original destinations used count */  olduse = c->used;  /* set the sign */  c->sign = a->sign;  /* alias for a->dp [source] */  tmpa = a->dp;  /* alias for c->dp [dest] */  tmpc = c->dp;  /* zero carry */  u = 0;  /* compute columns */  for (ix = 0; ix < a->used; ix++) {    /* compute product and carry sum for this term */    r       = ((mp_word) u) + ((mp_word)*tmpa++) * ((mp_word)b);    /* mask off higher bits to get a single digit */    *tmpc++ = (mp_digit) (r & ((mp_word) MP_MASK));    /* send carry into next iteration */    u       = (mp_digit) (r >> ((mp_word) DIGIT_BIT));  }  /* store final carry [if any] */  *tmpc++ = u;  /* now zero digits above the top */  while (ix++ < olduse) {     *tmpc++ = 0;  }  /* set used count */  c->used = a->used + 1;  mp_clamp(c);  return MP_OKAY;}#endif

⌨️ 快捷键说明

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