浮点数运算.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浮点数运算

* * * * * * * * * * * * * TMS320浮点数格式 单精度浮点格式: 8位指数,1位符号,23位分数(32位) f s e 0 22 23 24 31 0 11111111111111111111111 * TMS320浮点数格式 单精度浮点格式: 8位指数,1位符号,23位分数(32位) f s e 0 22 23 24 31 0 00000000000000000000000 * TMS320浮点数格式 单精度浮点格式: 8位指数,1位符号,23位分数(32位) f s e 0 22 23 24 31 1 11111111111111111111111 * TMS320浮点数格式 单精度浮点格式: 8位指数,1位符号,23位分数(32位) f s e 0 22 23 24 31 1 00000000000000000000000 * TMS320浮点数格式 单精度浮点格式: 8位指数,1位符号,23位分数(32位) f s e 0 22 23 24 31 0 00000000000000000000000 * TMS320浮点数格式 扩展精度格式: 8位指数,1位符号,31位分数(40位) f s e 0 30 31 32 39 * 两种浮点数格式的转换 IEEE浮点格式与TMS320浮点格式的转换 硬件方法:专用芯片 软件方法 * 3.7 浮点数的基本运算 加、减运算前,对指数小的数按指数大的数进行规整(小数点对齐),再进行运算 乘法运算将尾数相乘,指数相加,再对得到的乘积进行归一化和特殊情况处理 除法运算采用子函数实现,可以采用叠代法等实现 * 浮点加减法 * 浮点乘法 尾数相乘:m1×m2 指数相加:e1+e2 乘积处理: * 浮点除法 除法指令:直接应用 无除法指令: 若求z=x/y,先用迭代法求1/y,再乘x 迭代公式可选用: e[i]=e[i-1]×(2.0-y×e[i-1]) 需选初始估值! * 3.8 非线性浮点运算的实现 丰富的库函数,C语言程序可直接调用 汇编语言必须遵循调用规约 快速实现的方法,查表法 浮点和定点运算的比较 浮点精度较高,动态范围更大 定点运算效率高 * * * * * * * * * * * * * * * * * * * * * 3.5 非线性运算定点 实现方法 在数值运算中,除基本的加减乘除运算外,还有其他许多非线性运算,如对数运算、开方运算、指数运算、三角函数运算等,实现这些非线性运算的方法一般有: (1)调用DSP编译系统的库函数; (2)查表法; (3)混合法。 3.5.1调用DSP编译系统的库函数 TMS320C2X/C5X 的C编译器提供了比较丰富的运行支持库函数。在这些库函数中,包含了诸如对数、开方、三角函数、指数等常用的非线性函数。在C程序中(也可在汇编程序中)只要采用与库函数相同的变量定义,就可以直接调用。 如,在库函数中,定义了以10为底的常用对数log10( ): #include math.h double log10(double x); 在C程序中按如下方式调用: float x,y; x = 10.0; y = log10(x); 3.5.2 查表法 在实时DSP应用中实现非线性运算,一般都采取适当降低运算精度来提高程序的运算速度。查表法是快速实现非线性运算最常用的方法。采用这种方法必须根据自变量的范围和精度要求制作一张表格。显然输入的范围越大,精度要求越高,则所需的表格就越大,即存储量也越大。查表法求值所需的计算就是根据输入值确定表的地址,根据地址就可得到相应的值,因而运算量较小。 已知正弦函数y=cos(x),制作一个512点表格,并说明查表方法。 由于正弦函数是周期函数,函数值在-1至+1之间,用查表法比较合适。 由于Q15的表示范围为-1至32767/32768之间,原则上讲-1至+1的范围必须用Q14表示。但一般从方便和总体精度考虑,类似情况仍用Q15表示,此时+1用32767来表示。 (1) 产生512点值的C语言程序如下所示: #define N 512 #define pi 3.14159 int sin_tab[512]; void main( ) { int i; for(i=0;iN;i++) sin_tab[i]=(int)(32767*sin(2*pi*i/N)); } (2) 查表 查表实际上就是根据输入值确定表的地址。设输入x在0~2?之间,则x对应于51

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档