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