首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

VDSP (BF561) 浮點運算系列(7):float 乏法運算特殊情況與溢出判斷

     編輯:關於C++

VDSP float 乏法編譯為 __float32_mul(libdsp/fpmult.asm),同樣處理零、NaN/Inf、溢出/下溢。

特殊情況

  1. 兩運算元皆為 0:回傳 0(12 cycles),保留符號(+0 * -0 = -0)。
  2. 運算元為 NaN/Inf:
    • Inf * Inf 或 Inf * 非零 → Inf(53 cycles)
    • Inf * 0 → NaN
    • Inf * -Inf → -Inf
  3. 向上溢出:指數和 > 254 → 回傳 ±Inf(52 cycles)。

    代碼邏輯:e1 + e2 - 127 > 127 等價 e1 + e2 > 254,而非直觀的 381,因偏移量編碼差異。

  4. 正常計算:92 cycles(驚人地比加減法 132 cycles 更快)。
  5. 向下溢出:Exp(x)+Exp(y) <= -149 → 回傳 0。

疑問點

  • 溢出判斷為何用 254 而非 381?
  • 下溢條件 -149 來源?
  • 參考書《計算機架構:量化方法》第二版。

乏法硬體無直接支援,全靠軟體模擬,正常路徑 92 cycles 仍屬可接受。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved