程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Vdsp(bf561)中的浮點運算(1):文檔的說法

Vdsp(bf561)中的浮點運算(1):文檔的說法

編輯:關於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庫和調用者之間是使用不同的選項來編譯的,那麼將造成程序運行時不可避免的錯誤!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved