Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 
  2 #include <linux/kernel.h>
  3 #include <linux/module.h>
  4 
  5 /**
  6  * int_sqrt - rough approximation to sqrt
  7  * @x: integer of which to calculate the sqrt
  8  *
  9  * A very rough approximation to the sqrt() function.
 10  */
 11 unsigned long int_sqrt(unsigned long x)
 12 {
 13         unsigned long op, res, one;
 14 
 15         op = x;
 16         res = 0;
 17 
 18         one = 1UL << (BITS_PER_LONG - 2);
 19         while (one > op)
 20                 one >>= 2;
 21 
 22         while (one != 0) {
 23                 if (op >= res + one) {
 24                         op = op - (res + one);
 25                         res = res +  2 * one;
 26                 }
 27                 res /= 2;
 28                 one /= 4;
 29         }
 30         return res;
 31 }
 32 EXPORT_SYMBOL(int_sqrt);
 33 
  This page was automatically generated by the LXR engine.