~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/lib/int_sqrt.c

Version: ~ [ 2.4.21-47.EL ] ~ [ 2.6.9-67.EL ] ~ [ 2.6.18-128.el5 ] ~ [ 2.6.18-164.el5 ] ~
Architecture: ~ [ i386 ] ~ [ x86_64 ] ~

  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 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.