2015/03/22

cordic sqrt(int)

int sqrt (int s)
{
    int x, y ,i,tmp;
    x = 32768 ;
    y = 0 ;
    for (i = 1; i <= 16; i++)
    {
        tmp = y + x;
        if ( (tmp * tmp) > s )
        {
            y = tmp;
        }
        x = x >> 1 ;
    }
    return y ;
}

16bitまでです。
どの辺がcordicかわからないけど、理屈はわかりやすいですね。
参考まで。

0 件のコメント:

コメントを投稿