快速开方算法比较:
public class Test {
private static int a,b,c,p=0x80;
private static int K,A,B,C,R=0x4000,D=60000;
public static float sqt1(){
if(D>50176){A=0; a=0; C=50176;c=224;} // 查表
else if(D>36864){A=50176;a=224;C=36864;c=192;}
else if(D>25600){A=36864;a=192;C=25600;c=160;}
else if(D>16384){A=25600;a=160;C=16384;c=128;}
else if(D>9216) {A=16384; a=128;C= 9216; c= 96;}
else if(D>4096) {A= 9216; a= 96; C= 4096; c= 64; }
else if(D>1024) {A= 4096; a= 64; C= 1024; c= 32; }
else {
A= 1024; a= 32; C= 0; c= 0;
}
p=16;R=256; // 初始化数据
do{ b=c+p;B=C;B>>=1; // 插值计算循环
if(A!=0){K=A;K>>=1;}
else K=0x8000; // 65536>>=1的数
B+=K;B-=R;
if(D>B){C=B;c=b;}
else{A=B;a=b;}
p>>=1;R>>=2;
}while(p!=1); // 循环4次结束
K=A-C;K>>=2;A-=K; C+=K; // 小数部分四舍五入
if(D<C)b=c;
else{
if(D<A)b=++c;
else b=a;
}
return b;
} //输出方根b
/**
* @param args
*/
public static void main(String[] args) {
Calculagraph.getInstance("fast").mark(null);
int i=0;
for(i=0;i<655350;i++)
{
D=i;
sqt1();
}
System.out.println(i);
Calculagraph.getInstance("fast").mark("end");
System.out.println(Calculagraph.remove("fast").getInfo()); //30ms
Calculagraph.getInstance("normal").mark(null);
for(i=0;i<655350;i++)
{
Math.sqrt(i);
}
System.out.println(i);
Calculagraph.getInstance("normal").mark("end");
System.out.println(Calculagraph.remove("normal").getInfo()); //10ms
}
}
分享到:
相关推荐
总的来说,该文介绍的快速开方算法为微处理器的数据处理提供了新的解决方案,尤其是在需要频繁进行开方运算的实时控制环境中,可以显著提升计算效率,减少延迟,从而提高整个系统的运行效能。对于设计和开发微处理器...
5. **代码实现**:在STM8S单片机上,我们可以使用C语言编写这种快速开方算法。由于STM8S系列的CPU支持位操作,因此可以直接对估算值进行位移操作,这将极大地提升计算速度。 总之,单片机快速开方运算是一种在资源...
在这种情况下,为了实现开方运算(sqrt),开发者通常会采用优化的算法,如查表法。本文将深入探讨如何在J2ME环境中使用查表法实现sqrt开方函数。 查表法的基本思想是预先计算好一部分常用数值的平方根,存储在一个...
十分实用的开方器,用于开方计算,只需输入需要开方的数字,按回车,即可得出答案。来下载吧!
### 基于FPGA快速平方根算法的实现 #### 摘要与背景 现场可编程门阵列(Field Programmable Gate Array,简称FPGA)作为一种高度灵活且高效的硬件平台,在众多领域得到了广泛应用。特别是在需要高速度和高灵活性的...
本文介绍了一种基于ADSP-BF533定点DSP的整数开平方快速算法,并给出了该算法的C语言及汇编实现。ADSP-BF533是一款适合多媒体信号处理的高性能处理器。算法特点在于不仅具有高精度,而且运算速度快、程序简单。算法...
### 开方算法详解 #### 一、手工计算方法 手工计算开方的过程较为繁琐,但原理清晰。以求一个数的平方根为例,通常采用逐步逼近的方法进行。 **步骤解析**: 1. **确定首位**:首先确定所求数字的整数部分首位是...
在提供的`FastSquareRoot.cpp`和`FastSquareRoot.h`文件中,很可能实现了一种快速开方算法。这类算法通常基于位操作和查表法,可以快速给出一个平方根的近似值,适用于对实时性能要求高的场景。 快速平方根算法的...
开方和三角函数等复杂计算汇编实现快速计算+完整公式推导
### 快速定点开平方算法解析 #### 一、引言 在嵌入式系统开发过程中,对于资源有限的处理器而言,高效的数学运算至关重要。本文介绍了一种适用于嵌入式系统的快速定点开平方算法,该算法特别适用于缺乏除法指令的...
【51系列单片机开方汇编子程序】是一个用于计算四字节无符号二进制数平方根的高效算法。这个子程序主要用于单片机环境,它能够处理大范围的数值,并且尽可能地减少了计算时间。以下是该子程序的详细解释: 1. **...
本文将详细探讨如何在FPGA上实现复数开方运算,特别是基于JPL(Jet Propulsion Laboratory)算法的近似运算方法。 复数开方运算在通信系统、信号分析和控制系统中具有重要应用,它涉及到对复数形式的数据进行平方根...
《易语言学习之累加开方计算器》是一个适合初学者实践的编程项目,它结合了基本的数学运算和编程逻辑,旨在...总的来说,"易语言学习之累加开方计算器"是一个实用且全面的学习资源,可以帮助初学者快速进入编程世界。
综上所述,浮点数开方涉及到计算机中的数值计算、浮点数表示、数值稳定性和算法设计等多个方面,是理解和优化计算性能的关键点。通过深入学习这些知识点,开发者可以更好地理解和解决与浮点数开方相关的问题。
本文将深入探讨标题"**PPE.rar_reciprocal_倒数_开方**"所涵盖的三个关键概念:倒数计算、开方运算以及流水线结构,并结合描述中的"latency为23周期"来分析其性能。 1. **倒数计算(Reciprocal)**: 在数学中,一...
浮点数据算法主要涉及浮点数的表示方法和计算过程,是计算机科学中处理实数的一种方式。浮点数在计算机内部通常分为三部分:符号位(s)、阶码(E)和尾数(M)。浮点运算器是实现这些计算的核心硬件,它包括处理阶...
在置换群中,整幂运算可以在线性时间复杂度内解决,而开方运算需要更多的计算步骤和更复杂的算法。 在实际应用中,置换群快速幂运算和开方运算有很多重要的应用,例如在密码学和加密技术中,它们可以用来加速加密和...
(1)且用asin曲线计算代替难以描述的atan曲线,快速开方函数 (2)全部采用整形运算,加快了运算速度,返回的角度范围是0~360.00,包含4个象限,输出角度值 (3)asin曲线使用了一半的曲线,解决了asin邻近90度时...
单片机上的开方程序介绍 该文章介绍了在单片机上实现开平方操作的方法。目前,开平方方法大部分使用牛顿迭代法,但作者发现了一种比牛顿迭代法更加快速...该函数使用了上述算法来计算平方根,并且具有较高的计算效率。