Home | History | Annotate | Line # | Download | only in libtommath
      1 /*	$NetBSD: bn_mp_clamp.c,v 1.2 2017/01/28 21:31:47 christos Exp $	*/
      2 
      3 #include <tommath.h>
      4 #ifdef BN_MP_CLAMP_C
      5 /* LibTomMath, multiple-precision integer library -- Tom St Denis
      6  *
      7  * LibTomMath is a library that provides multiple-precision
      8  * integer arithmetic as well as number theoretic functionality.
      9  *
     10  * The library was designed directly after the MPI library by
     11  * Michael Fromberger but has been written from scratch with
     12  * additional optimizations in place.
     13  *
     14  * The library is free for all purposes without any express
     15  * guarantee it works.
     16  *
     17  * Tom St Denis, tomstdenis (at) gmail.com, http://libtom.org
     18  */
     19 
     20 /* trim unused digits
     21  *
     22  * This is used to ensure that leading zero digits are
     23  * trimed and the leading "used" digit will be non-zero
     24  * Typically very fast.  Also fixes the sign if there
     25  * are no more leading digits
     26  */
     27 void
     28 mp_clamp (mp_int * a)
     29 {
     30   /* decrease used while the most significant digit is
     31    * zero.
     32    */
     33   while (a->used > 0 && a->dp[a->used - 1] == 0) {
     34     --(a->used);
     35   }
     36 
     37   /* reset the sign flag if used == 0 */
     38   if (a->used == 0) {
     39     a->sign = MP_ZPOS;
     40   }
     41 }
     42 #endif
     43 
     44 /* Source: /cvs/libtom/libtommath/bn_mp_clamp.c,v  */
     45 /* Revision: 1.4  */
     46 /* Date: 2006/12/28 01:25:13  */
     47