在vdsp提供的《VisualDSP++ 5.0 C/C++ Compiler and Library Manual for Blackfin P
寫一行很簡單的C代碼:float a = 1234.56;用vdsp編譯後的匯編代碼為:R0 = 20972 ( X ) ;R0.H = 1756
FLT_MIN是在float.h中定義的一個常量,用以表示單精度浮點數的最小值。#define FLT_MIN 1.175494350822287
FLT_MAX是在float.h中定義的一個常量,用以表示單精度浮點數的最大值。#define FLT_MAX 3.402823466385288
1.1 float的疑問寫一行很簡單的C代碼:float a = 1234.56;用vdsp編譯後的匯編代碼為:R0 = 20972 ( X )
一直以為float加減運算很簡單,無非就是將之轉換為__float32_add和__float32_sub這兩個函數調用而已,然後用軟件模擬進行加
1.1 Vdsp對float乘法運算的處理在vdsp下,可以很簡單地用:float mul (float x, float y){float r
1.1 Vdsp對float除法運算的處理在vdsp下,可以很簡單地用:float fdiv(float x, float y){float r
在默認情況下,vdsp認為double和float這兩種類型是一樣的,因此我們比較long double和float。1.1 類型表示下面是兩種類
fract16是VDSP的另一種浮點類型,它使用1.15的格式:最高位為符號位,其余為數據位,沒有指數和尾數的概念。最大值:+0.99996948
vdsp提供了兩個函數用以實現fract16與float之間的相互轉換:fract16 float_to_fr16 (float _x);floa
由於減法實際可以看成加上一個負數,因此我們只需要看加法操作。fract16的加法運算由add_fr1x16函數完成:#pragma inline#
vdsp提供了三種不同的方式進行fract16的乘法運算。1.1 mult_fr1x16函數這個函數定義為:#pragma inline#prag
原來指望能夠有div_fr1x16之類的函數來實現fract16的除法,但是很遺憾vdsp居然不直接提供這樣的函數,讓人頗為尴尬,估計是因為其CP
在寫完fract除法之後,偶然發現在vdsp的一個頭文件中提供了fract16除法運算的函數,這個文件就是VisualDSP 5.0\Blackf
由於BF561內部帶有兩個16位的MAC,因此它將可以在一個周期內進行兩個fract16類型的運算。為適應這種特性,vdsp引入了一個稱之為fra