LCOV - code coverage report
Current view: top level - lib - int_sqrt.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 8 9 88.9 %
Date: 2014-02-18 Functions: 1 1 100.0 %
Branches: 5 5 100.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright (C) 2013 Davidlohr Bueso <davidlohr.bueso@hp.com>
       3                 :            :  *
       4                 :            :  *  Based on the shift-and-subtract algorithm for computing integer
       5                 :            :  *  square root from Guy L. Steele.
       6                 :            :  */
       7                 :            : 
       8                 :            : #include <linux/kernel.h>
       9                 :            : #include <linux/export.h>
      10                 :            : 
      11                 :            : /**
      12                 :            :  * int_sqrt - rough approximation to sqrt
      13                 :            :  * @x: integer of which to calculate the sqrt
      14                 :            :  *
      15                 :            :  * A very rough approximation to the sqrt() function.
      16                 :            :  */
      17                 :          0 : unsigned long int_sqrt(unsigned long x)
      18                 :            : {
      19                 :            :         unsigned long b, m, y = 0;
      20                 :            : 
      21         [ +  + ]:   11990012 :         if (x <= 1)
      22                 :            :                 return x;
      23                 :            : 
      24                 :            :         m = 1UL << (BITS_PER_LONG - 2);
      25            [ + ]:  201914674 :         while (m != 0) {
      26                 :  190035136 :                 b = y + m;
      27                 :  190035136 :                 y >>= 1;
      28                 :            : 
      29         [ +  + ]:  190035136 :                 if (x >= b) {
      30                 :   56068178 :                         x -= b;
      31                 :   56068178 :                         y += m;
      32                 :            :                 }
      33                 :  190035136 :                 m >>= 2;
      34                 :            :         }
      35                 :            : 
      36                 :            :         return y;
      37                 :            : }
      38                 :            : EXPORT_SYMBOL(int_sqrt);

Generated by: LCOV version 1.9