/* * Copyright (C) 2013 Davidlohr Bueso <davidlohr.bueso@hp.com> * * Based on the shift-and-subtract algorithm for computing integer * square root from Guy L. Steele. */#include <linux/kernel.h>#include <linux/export.h>/** * int_sqrt - rough approximation to sqrt * @x: integer of which to calculate the sqrt * * A very rough approximation to the sqrt() function. */unsignedlongint_sqrt(unsignedlongx){unsignedlongb,m,y=0;if(x<=1)returnx;m=1UL<<(BITS_PER_LONG-2);while(m!=0){b=y+m;y>>=1;if(x>=b){x-=b;y+=m;}m>>=2;}returny;}EXPORT_SYMBOL(int_sqrt);