C++で任意精度の算術演算用のコンパイル時ライブラリ(テンプレートメタプログラミング)はありますか?C++コンパイル時bignumライブラリ
私のAVRマイクロコントローラ用のプログラムでは、固定小数点演算とバイナリスケーリングに役立つ必要があります。たとえば、それぞれに独自の境界を持つ2つの数値が乗算される場合、bignumを使用して結果の境界を計算し、小数点を必要に応じて入力および/または出力に移動します。しかし、結果の境界は、標準の整数型では表現できない場合があります。
C++で任意精度の算術演算用のコンパイル時ライブラリ(テンプレートメタプログラミング)はありますか?C++コンパイル時bignumライブラリ
私のAVRマイクロコントローラ用のプログラムでは、固定小数点演算とバイナリスケーリングに役立つ必要があります。たとえば、それぞれに独自の境界を持つ2つの数値が乗算される場合、bignumを使用して結果の境界を計算し、小数点を必要に応じて入力および/または出力に移動します。しかし、結果の境界は、標準の整数型では表現できない場合があります。
「テンプレートメタプログラミング」とはどういう意味ですか? 「BigInteger」型ライブラリは、実際には常に動的メモリ割り当てを使用します。それ以外の場合は、より大きなタイプ(つまり、署名付きint32を乗算するためのint64の署名付き)を使用することができます。 – DarkWanderer
@DarkWandererつまり、テンプレートのメタプログラミングです。このリンクは、コンパイル時にbignumがどのように実装されるかを示します。http://alpmestan.wordpress.com/2009/12/03/functional-compile-time-templates-based-type-lists-in-c/ 。本質的に、コンパイル時のbignumは(再帰的な)型になり、コンパイラはメモリ割り当てを処理します。 –
@DarkWanderer大きな整数型では不十分です - 私の問題はコンパイル時に型の境界を扱うことです。コンパイル時に "A + B"の行に沿って何かチェックする必要があります。 INT64_MIN "である。コンパイル時のbignumは整数のオーバーフローを心配することなくこれらを "直接"書くことができます。 –