易码技术论坛

 找回密码
 加入易码
搜索
12
返回列表 发新帖
楼主: JAY

[求助]如何在Lava里面开方,算arctan(x)

[复制链接]
发表于 2005-6-7 11:36:00 | 显示全部楼层
C不需要汇编作支持!
C不一定先编译为汇编,C可以直接编译为机器码!
发表于 2005-6-8 10:26:00 | 显示全部楼层
说了半天都是没用的, 还是这个有用
int sqrt(long M)
{
    int N, i;
    long tmp, ttp;   // 结果、循环计数
    if(M==0)               // 被开方数,开方结果也为0
        return 0;
    N=0;
    tmp =(M>>30);          // 获取最高位:B[m-1]
    M=M<<2;
    if(tmp > 1)              // 最高位为1
    {
        N++;                 // 结果当前位为1,否则为默认的0
        tmp=tmp-N;
    }
    for(i=15;i>0;i--)      // 求剩余的15位
    {
        N=N<<1;              // 左移一位
        tmp=tmp<<2;
        tmp=tmp+(-(M<0))*2+((M&0x7fffffff)>>30);     // 假设
        ttp=N;
        ttp=(ttp<<1)+1;
        M=M<<2;
        if(tmp>=ttp)       // 假设成立
        {
            tmp=tmp-ttp;
            N++;
        }
     }
    return N;
}
 楼主| 发表于 2005-2-17 18:53:14 | 显示全部楼层 |阅读模式
如何在Lava里面开方,以及arctan(x)的算法
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-6-17 17:49 , Processed in 0.010466 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表