]> pd.if.org Git - zpackage/blob - tomsfastmath/src/addsub/s_fp_sub.c
commit files needed for zpm-fetchurl
[zpackage] / tomsfastmath / src / addsub / s_fp_sub.c
1 /* TomsFastMath, a fast ISO C bignum library.
2  * 
3  * This project is meant to fill in where LibTomMath
4  * falls short.  That is speed ;-)
5  *
6  * This project is public domain and free for all purposes.
7  * 
8  * Tom St Denis, tomstdenis@gmail.com
9  */
10 #include <tfm_private.h>
11
12 /* unsigned subtraction ||a|| >= ||b|| ALWAYS! */
13 void s_fp_sub(fp_int *a, fp_int *b, fp_int *c)
14 {
15   int      x, oldbused, oldused;
16   fp_word  t;
17
18   oldused  = c->used;
19   oldbused = b->used;
20   c->used  = a->used;
21   t       = 0;
22   for (x = 0; x < oldbused; x++) {
23      t         = ((fp_word)a->dp[x]) - (((fp_word)b->dp[x]) + t);
24      c->dp[x]  = (fp_digit)t;
25      t         = (t >> DIGIT_BIT)&1;
26   }
27   for (; x < a->used; x++) {
28      t         = ((fp_word)a->dp[x]) - t;
29      c->dp[x]  = (fp_digit)t;
30      t         = (t >> DIGIT_BIT)&1;
31    }
32   for (; x < oldused; x++) {
33      c->dp[x] = 0;
34   }
35   fp_clamp(c);
36 }
37
38 /* $Source$ */
39 /* $Revision$ */
40 /* $Date$ */