LCOV - code coverage report
Current view: top level - source4/heimdal/lib/hcrypto/libtommath - bn_mp_add.c (source / functions) Hit Total Coverage
Test: coverage report for abartlet/fix-coverage dd10fb34 Lines: 10 12 83.3 %
Date: 2021-09-23 10:06:22 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include <tommath.h>
       2             : #ifdef BN_MP_ADD_C
       3             : /* LibTomMath, multiple-precision integer library -- Tom St Denis
       4             :  *
       5             :  * LibTomMath is a library that provides multiple-precision
       6             :  * integer arithmetic as well as number theoretic functionality.
       7             :  *
       8             :  * The library was designed directly after the MPI library by
       9             :  * Michael Fromberger but has been written from scratch with
      10             :  * additional optimizations in place.
      11             :  *
      12             :  * The library is free for all purposes without any express
      13             :  * guarantee it works.
      14             :  *
      15             :  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
      16             :  */
      17             : 
      18             : /* high level addition (handles signs) */
      19        7081 : int mp_add (mp_int * a, mp_int * b, mp_int * c)
      20             : {
      21             :   int     sa, sb, res;
      22             : 
      23             :   /* get sign of both inputs */
      24        7081 :   sa = a->sign;
      25        7081 :   sb = b->sign;
      26             : 
      27             :   /* handle two cases, not four */
      28        7081 :   if (sa == sb) {
      29             :     /* both positive or both negative */
      30             :     /* add their magnitudes, copy the sign */
      31        6880 :     c->sign = sa;
      32        6880 :     res = s_mp_add (a, b, c);
      33             :   } else {
      34             :     /* one positive, the other negative */
      35             :     /* subtract the one with the greater magnitude from */
      36             :     /* the one of the lesser magnitude.  The result gets */
      37             :     /* the sign of the one with the greater magnitude. */
      38         201 :     if (mp_cmp_mag (a, b) == MP_LT) {
      39         201 :       c->sign = sb;
      40         201 :       res = s_mp_sub (b, a, c);
      41             :     } else {
      42           0 :       c->sign = sa;
      43           0 :       res = s_mp_sub (a, b, c);
      44             :     }
      45             :   }
      46        7081 :   return res;
      47             : }
      48             : 
      49             : #endif
      50             : 
      51             : /* $Source: /cvs/libtom/libtommath/bn_mp_add.c,v $ */
      52             : /* $Revision: 1.4 $ */
      53             : /* $Date: 2006/12/28 01:25:13 $ */

Generated by: LCOV version 1.13