Vdsp(bf561)中的浮点运算(1):文档的说法[VC/C++编程]
本文“Vdsp(bf561)中的浮点运算(1):文档的说法[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在vdsp供应的《VisualDSP++ 5.0 C/C++ Compiler and Library Manual for Blackfin Processors Revision 5.1, August 2008》中列出了vdsp支持的全部数据范例,此中与浮点有点的范例有:
Type | Bit Size | Number Representation | sizeof returns |
double | 32 bits | 32-bit IEEE single-precision | 4 |
float | 32 bits | 32-bit IEEE single-precision | 4 |
double | 64 bits | 64-bit IEEE double-precision | 8 |
long double | 64 bits | 64-bit IEEE | 8 |
fract16 | 16 bits signed | 1.15 fract | 2 |
fract32 | 32 bits signed | 1.31 fract | 4 |
此中前4个采取了IEEE的格局,而fract则是ADI自己定义的格局.
在这里简单混合的一点是通过project options -> compilers中的参数配置可以掌握利用的double范例是32位的还是64位的,可恶的是在默许情形下,vdsp是将double当作32位来处理的,这关于某些科学计算相关的代码来说简直是一个恶梦!
当然了,由于bf561硬件本身不支持浮点运算,只能通过软件模拟来实现,所以文档中这样注释为什么默许情形下要利用32位的double:
On Blackfin processors, the float data type is 32 bits, and the double data type default size is 32 bits. This size is chosen because it is the most efficient. The 64-bit long double data type is available if more precision is needed, although this is more costly because the type exceeds the data sizes supported natively by hardware.
仿佛委曲也说得过去.
但由此造成的一个问题是:假如在要利用的dlb库和调用者之间是利用差别的选项来编译的,那么将造成程序运行时不可避免的错误!
以上是“Vdsp(bf561)中的浮点运算(1):文档的说法[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |