1

私は c++ を使用して物理シミュレーションを実行しています。正確な結果を得るには、boost::multiprecision を使用しています。これまでは cpp_dec_float_50 タイプを使用していましたが、今度は異なる変数のシミュレーションを異なる精度でテストする必要があります。

では、cpp_dec_float_27(27 桁の精度) などの新しいタイプを作成するにはどうすればよいですか?

テンプレートコードを変更しようとしました:

namespace boost{ namespace multiprecision{
template <unsigned Digits10, class ExponentType = boost::int32_t, class Allocator = void>
class cpp_dec_float;
typedef number<cpp_dec_float<50> > cpp_dec_float_50;
typedef number<cpp_dec_float<100> > cpp_dec_float_100;
}} // namespaces

しかし、私は多くの問題を抱えています。

4

1 に答える 1

2

私の理解が正しければ、あなたはブーストのインストールを変更しようとしていますが、決してそうすべきではありません。残りのブースト ソースはおそらくそれに依存しているためです。

独自の精度を定義する場合は、単純な typedef が必要です。

typedef number<cpp_dec_float<27> > cpp_dec_float27;

これで準備完了です。

ただし、関数が cpp_dec_float100 型に依存している場合は、これらの関数のテンプレートを使用して複数の精度を受け入れることを検討することをお勧めします。

于 2015-11-15T13:20:03.447 に答える