The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/lib/int_sqrt.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 
    2 #include <linux/kernel.h>
    3 #include <linux/export.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);

Cache object: d9bca05ab86be7fb17b2abafde2cc22f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.