OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [lib/] [int_sqrt.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
 
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);

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.