Version:  2.0.40 2.2.26 2.4.37 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10

Linux/lib/int_sqrt.c

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

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us