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

          Line data    Source code
       1             : #include <tommath.h>
       2             : #ifdef BN_MP_SQR_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             : /* computes b = a*a */
      19             : int
      20      629214 : mp_sqr (mp_int * a, mp_int * b)
      21             : {
      22             :   int     res;
      23             : 
      24             : #ifdef BN_MP_TOOM_SQR_C
      25             :   /* use Toom-Cook? */
      26      629214 :   if (a->used >= TOOM_SQR_CUTOFF) {
      27           0 :     res = mp_toom_sqr(a, b);
      28             :   /* Karatsuba? */
      29             :   } else
      30             : #endif
      31             : #ifdef BN_MP_KARATSUBA_SQR_C
      32      629214 : if (a->used >= KARATSUBA_SQR_CUTOFF) {
      33        2280 :     res = mp_karatsuba_sqr (a, b);
      34             :   } else
      35             : #endif
      36             :   {
      37             : #ifdef BN_FAST_S_MP_SQR_C
      38             :     /* can we use the fast comba multiplier? */
      39     1220736 :     if ((a->used * 2 + 1) < MP_WARRAY &&
      40      593802 :          a->used <
      41             :          (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) {
      42      626934 :       res = fast_s_mp_sqr (a, b);
      43             :     } else
      44             : #endif
      45             : #ifdef BN_S_MP_SQR_C
      46           0 :       res = s_mp_sqr (a, b);
      47             : #else
      48             :       res = MP_VAL;
      49             : #endif
      50             :   }
      51      629214 :   b->sign = MP_ZPOS;
      52      629214 :   return res;
      53             : }
      54             : #endif
      55             : 
      56             : /* $Source: /cvs/libtom/libtommath/bn_mp_sqr.c,v $ */
      57             : /* $Revision: 1.4 $ */
      58             : /* $Date: 2006/12/28 01:25:13 $ */

Generated by: LCOV version 1.13