Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MiniTLS-GPL by
fp_mod_2d.c
00001 /* TomsFastMath, a fast ISO C bignum library. 00002 * 00003 * This project is meant to fill in where LibTomMath 00004 * falls short. That is speed ;-) 00005 * 00006 * This project is public domain and free for all purposes. 00007 * 00008 * Tom St Denis, tomstdenis@gmail.com 00009 */ 00010 #include <tfm.h> 00011 00012 /* c = a mod 2**d */ 00013 void fp_mod_2d(fp_int *a, int b, fp_int *c) 00014 { 00015 int x; 00016 00017 /* zero if count less than or equal to zero */ 00018 if (b <= 0) { 00019 fp_zero(c); 00020 return; 00021 } 00022 00023 /* get copy of input */ 00024 fp_copy(a, c); 00025 00026 /* if 2**d is larger than we just return */ 00027 if (b >= (DIGIT_BIT * a->used)) { 00028 return; 00029 } 00030 00031 /* zero digits above the last digit of the modulus */ 00032 for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x++) { 00033 c->dp[x] = 0; 00034 } 00035 /* clear the digit that is not completely outside/inside the modulus */ 00036 c->dp[b / DIGIT_BIT] &= ~((fp_digit)0) >> (DIGIT_BIT - b); 00037 fp_clamp (c); 00038 } 00039 00040 /* $Source: /cvs/libtom/tomsfastmath/src/bit/fp_mod_2d.c,v $ */ 00041 /* $Revision: 1.1 $ */ 00042 /* $Date: 2006/12/31 21:25:53 $ */
Generated on Tue Jul 12 2022 19:20:10 by
1.7.2
