libfixmath
| libfixmath | |
|---|---|
| 開発者 | ベン・ブリューワー |
| 安定版リリース | r64 / 2012年2月2日 |
| リポジトリ |
|
| 書かれた | C99 |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 固定小数点数学ライブラリ |
| ライセンス | マサチューセッツ工科大学 |
| Webサイト | code.google.com/p/libfixmath |
libfixmathは、プラットフォームに依存しない 固定小数点演算ライブラリです。FPUを搭載していない(または性能の低い)プラットフォームで高速な非整数演算を実行したい開発者を対象としています。Q16.16固定小数点数で使用するための標準math.h関数と同様のインターフェースを開発者に提供します。libfixmathは、 stdint.hと64ビット整数演算をサポートするコンパイラ( GCCなど)以外に外部依存関係はありません。 [1]マイクロコントローラやDSP用の多くのコンパイラは64ビット演算をサポートしていないため、条件付きコンパイルオプションによって64ビット対応コンパイラの必要性を排除できます。[2]
歴史
libfixmathはBen Brewerによって開発され、Dingoo SDKの一部として初めて公開されました。[3]その後、FGLと呼ばれるソフトウェア3Dグラフィックスライブラリの実装に使用されてきました。[4]
Q16.16 関数
| 名前 | 説明 |
|---|---|
fix16_acos | 逆余弦 |
fix16_asin | 逆正弦 |
fix16_atan | 1パラメータ逆正接 |
fix16_atan2 | 2パラメータ逆正接 |
fix16_cos | 余弦 |
fix16_exp | 指数関数 |
fix16_sin | 正弦 |
fix16_sqrt | 平方根 |
fix16_tan | 正接 |
fix16_mul | 乗算 |
fix16_div | 分割 |
fix16_sadd | 飽和 添加 |
fix16_smul | 飽和 乗算 |
fix16_sdiv | 飽和 分割 |
その他の機能
| 名前 | 説明 |
|---|---|
fix16_to_dbl | Q16.16をdoubleに変換する |
fix16_to_float | Q16.16を浮動小数点数に変換する |
fix16_to_int | Q16.16を整数に変換する |
fix16_from_dbl | 倍精度数をQ16.16に変換する |
fix16_from_float | 浮動小数点数をQ16.16に変換する |
fix16_from_int | 整数をQ16.16に変換する |
パフォーマンス
最も負荷の高い関数 ( atan2 ) のベンチマーク結果は次のようになります。
| 名前 | フロートと比較した時間 |
|---|---|
| ARM Cortex-M0 | 26.3% |
| Marvell PXA270 ( ARM ) @ 312 MHz | 58.45% |
| インテル T5500 | 120% |
| インテル Atom N280 | 141% |
注: これらの結果は、キャッシュ最適化をオフにしたfixtestを使用して計算されました。[5]
ライセンス
libfixmath は、寛容なフリーソフトウェアライセンスであるMIT ライセンスの下でリリースされており、フリーソフトウェアです。
参照
参考文献
- ^ 「libfixmath プロジェクトページ」。GitHub 。
- ^ 「64 ビット コンパイラのサポートの問題」。
- ^ 「Dingoo SDK プロジェクト ページ」。
- ^ 「FGL Flatmush/固定小数点グラフィックス ライブラリ プロジェクト ページ」。
- ^ 「fixtest ダウンロード ページ」。
外部リンク
- プロジェクトページ
- グループページ/メーリングリスト