web-dev-qa-db-ja.com

C ++固定小数点ライブラリ?

無料のC++固定小数点ライブラリを探しています(主に組み込みデバイスで使用するためのものであり、任意精度の数学用ではありません)。基本的に、要件は次のとおりです。

  • 不要なランタイムオーバーヘッドはありません。コンパイル時に実行できることはすべて、コンパイル時に実行する必要があります。
  • 固有のオーバーヘッドなしで、固定小数点と浮動小数点の間でコードを透過的に切り替える機能。
  • 固定小数点数学関数。平方根を取得するために前後にキャストする必要がある場合、固定小数点を使用するポイントはあまりありません。
  • 小さな足跡。

助言がありますか?

52
uj2

以下のリンクをクリックすると、オープンソースの固定小数点数学ライブラリプロジェクトが見つかります。

C++ユーザー向けのC++クラスインターフェイスを備えたC静的ライブラリであり、次の機能を実装します。関数:sin、cos、tan、asin、acos、atan、atan2飽和演算:sadd、ssub、smul、sdivその他の関数:sqrt、exp

16.16固定小数点データ型 のみをサポートします。

これは、積極的に開発されたオープンソースプロジェクトです(関心のある開発者を探しています)。

6
flatmush

C++での固定小数点表現の処理に関する次の2つの適切な実装を確認してください(外部ライブラリは不要です)。

  1. Fixed-Point-Class by Peter Schregle。また、additionmultiplicationdivision

    コード例:

    #include <fixed_point.h>
    using namespace fpml;
    
    main()
    {
        fixed_point<int, 16> a = 256;
        fixed_point<int, 16> b = sqrt(a);
    }
    
  2. C++での固定小数点数の実装 by Khuram ALi。

5
herohuyongtao

GitHubのオープンソース固定小数点ライブラリは次のとおりです。

https://github.com/mbedded-ninja/MFixedPoint

32ビットおよび64ビットの固定小数点数(任意の商)をサポートし、高速(すべてがテンプレート化されていますが、少し手作業です)と低速の固定小数点数(より自動ですが低速)の両方をサポートします。

組み込みプラットフォーム向けですが、マイクロコントローラとLinuxの両方で問題なく使用しています。

2
gbmhunter

素敵な小さなc ++ヘッダーを取得しました。 sweet :: Fixed で見つけることができます。 typedef sweet :: Fixed MyFloatを定義するだけです;他のフロート値と同様に使用します。または、後で必要なfloat型に交換します。クラスには2つの64ビット値があります。整数部に1つ、小数部に1つ。

sweet.hpp calledfixed.hppに小さな固定小数点c ++ 11クラスヘッダーimplがあります。両方の部分に32ビットを使用します。

typedef float MyFloat;         // This will feel the same
typedef sweet::Fixed MyFloat;  // like this
1
burner
1
Stef