bn_mp_mod.c

Go to the documentation of this file.
00001 #include <tommath.h>
00002 #ifdef BN_MP_MOD_C
00003 /* LibTomMath, multiple-precision integer library -- Tom St Denis
00004  *
00005  * LibTomMath is a library that provides multiple-precision
00006  * integer arithmetic as well as number theoretic functionality.
00007  *
00008  * The library was designed directly after the MPI library by
00009  * Michael Fromberger but has been written from scratch with
00010  * additional optimizations in place.
00011  *
00012  * The library is free for all purposes without any express
00013  * guarantee it works.
00014  *
00015  * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com
00016  */
00017 
00018 /* c = a mod b, 0 <= c < b */
00019 int
00020 mp_mod (mp_int * a, mp_int * b, mp_int * c)
00021 {
00022   mp_int  t;
00023   int     res;
00024 
00025   if ((res = mp_init (&t)) != MP_OKAY) {
00026     return res;
00027   }
00028 
00029   if ((res = mp_div (a, b, NULL, &t)) != MP_OKAY) {
00030     mp_clear (&t);
00031     return res;
00032   }
00033 
00034   if (t.sign != b->sign) {
00035     res = mp_add (b, &t, c);
00036   } else {
00037     res = MP_OKAY;
00038     mp_exch (&t, c);
00039   }
00040 
00041   mp_clear (&t);
00042   return res;
00043 }
00044 #endif
00045 
00046 /* $Source: /cvsroot/tcl/libtommath/bn_mp_mod.c,v $ */
00047 /* $Revision: 1.1.1.3 $ */
00048 /* $Date: 2006/12/01 00:08:11 $ */



Generated on Wed Mar 12 12:18:24 2008 by  doxygen 1.5.1