eiselekd / fpu_in_c

Cでfpu書いたやつ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

fpuをCで実装したもの.

使い方

  • topでmakeするとlibfpu.aが生成されます.
  • fpu.hをincludeして,libfpu.aをリンクしてください.

仕様

  • フォーマットはieee754の32bit floating pointを採用している.
  • denormalized numberは採用していない.(0になる)
  • roundingはround evenを採用している.

faddの仕様

  • expr & mantissaが等しいときは第二引数の符号に合わせる
    • +0 + -0 = -0

h_floorの仕様

  • floatを32bitで渡すと32bit符号付き整数を返す
  • 丸め方向は0向き
  • 大きすぎる数を与えると0を返す
  • 中途半端に大きい数を与えると正負が逆転したりする
    • 後ろ2つはサポートしない (というか本来例外投げるべきだと思う)

Sample

  • h_floor 1 -> 1
  • h_floor 1.3 -> 1
  • h_floor -1.3 -> -1
  • h_floor -1 -> -1
  • h_floor 20000000000 -> 0
  • h_floor 1000000000 -> 1000000000
  • h_floor -3000040000 -> 1294927360

feqの仕様

  • 等しかったらtrueを返す
  • feq Nan Nan := false
  • feq -0 0 := true

fltの仕様

  • flt A B := A < B

About

Cでfpu書いたやつ


Languages

Language:C 95.1%Language:Makefile 4.6%Language:Shell 0.3%