LCOV - code coverage report
Current view: top level - lib - int_sqrt.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 9 9 100.0 %
Date: 2015-04-12 14:34:49 Functions: 1 1 100.0 %

          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           2 : unsigned long int_sqrt(unsigned long x)
      18             : {
      19             :         unsigned long b, m, y = 0;
      20             : 
      21           2 :         if (x <= 1)
      22             :                 return x;
      23             : 
      24             :         m = 1UL << (BITS_PER_LONG - 2);
      25          34 :         while (m != 0) {
      26          32 :                 b = y + m;
      27          32 :                 y >>= 1;
      28             : 
      29          32 :                 if (x >= b) {
      30          11 :                         x -= b;
      31          11 :                         y += m;
      32             :                 }
      33          32 :                 m >>= 2;
      34             :         }
      35             : 
      36             :         return y;
      37             : }
      38             : EXPORT_SYMBOL(int_sqrt);

Generated by: LCOV version 1.11