問題タブ [multiprecision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1311 参照

c++ - cpp_dec_float を指数表記で末尾のゼロなしで出力します

私はcpp_dec_float任意の精度で使用していますが、それは素晴らしいのですが、すべての有効数字を出力する方法がわかりません。

たとえば、このコードを使用してセットアップします

そして、単純に印刷すると

結果は7.071068e-01です。

私が壊れた場合

私は得る7.0710678118654752440084436210484903928483593768847403658833986900000000000000000000000000000000000000e-01。精度を落とさなくてよかったのですが、スペースの節約にはなりません。

既存のツールで精度を失うことなく末尾のゼロを削除する方法はありますか? そうでない場合、結果の文字列から末尾のゼロを削除するにはどうすればよいですか?

私の意図を満たすために既存のツールを使用できる場合、cpp_dec_float精度を失わず、文字列の末尾のゼロを削除せずに科学表記法で出力するにはどうすればよいでしょうか? ストリームの例しか見つかりません。

クローザー

モックインターフェイスのおかげで、私はずっと近くにいます。

コードを次のように変更しました。

潜在的に無制限の長さを持つこと。ただし、これは印刷されます。

これは近いですが奇妙に思えます。親切に指摘されたソースのモックインターフェイスで、これらの行を見つけました

これは、すべての有効数字を考慮に入れる必要があることを示唆しており、基本的には長さが無制限であるため、入力されたものを出力します。

のソースを確認しましたcpp_dec_float_total_digits10が、それが何であるかを正確に判断できません。ただし、それを定義しているように見えるこのコードセクションを見つけました。

の最初の引数として有効桁数を決定して使用できますboost::multiprecision::cpp_dec_float::str()か?

0 投票する
1 に答える
3752 参照

c++ - boost::multiprecision::cpp_int から cpp_dec_float<0> (cpp_dec_float_50 などではなく) に変換する方法は?

Boost Multiprecision ライブラリのドキュメントで明らかにされているように、 a から aboost::multiprecision::cpp_intへの変換は簡単boost::multiprecision::cpp_dec_floatです。

acpp_intから固定幅浮動小数点型 (つまり、 a ) に変換できるということは、 aからライブラリ内の任意幅cpp_dec_float_50の浮動小数点型 (つまり、 a ) に変換できる可能性があるという 1 つの希望を与えてくれます。ただし、これは機能しません。次の簡単なサンプル プログラムが示すように、Visual Studio 2013 では変換が失敗します。cpp_intcpp_dec_float<0>

期待どおり への変換に成功しますcpp_dec_float_50が、前述のように、任意精度の浮動小数点型への変換を望んでいます: cpp_dec_float<0>.

エラーは、ファイル内の内部 Boost Multiprecision コードからの次のコード スニペットに表示されます<boost/multiprecision/detail/default_ops.hpp>

エラーメッセージは次のとおりです。

エラー C2784: 'enable_if::result_type,detail::expression::result_type>,bool>::type boost::multiprecision::operator >(const boost::multiprecision::detail::expression &,const boost::multiprecision ::detail::expression &)': 'const boost::multiprecision::detail::expression &' のテンプレート引数を 'const next_type' から推測できませんでした

boost::multiprecision::cpp_intaを aに変換することは可能でしょうかboost::multiprecision::cpp_dec_float<0>(のように固定小数点精度の浮動小数点型に変換するのではなくcpp_dec_float_50)?

(私のプログラムでは、浮動小数点数のインスタンスが常に 1 つだけインスタンス化され、頻繁に更新されないことに注意してください。そのため、この 1 つのインスタンスが大量のメモリを消費し、実際にサポートするのに長い時間がかかることは問題ありません。膨大な数。)

ありがとう!

0 投票する
1 に答える
69 参照

c++ - 静的データ初期化子をインラインで使用する

cpp_dec_floatソース ファイルで次のセクションを見つけました。

グローバル変数を宣言するのではなくzeroone、 、two、などの値を使用したいと思います。halfconst

これらの値をインラインで使用することは可能ですか? もしそうなら、どのように?

0 投票する
1 に答える
509 参照

c++ - std::vector が可能>(N).data() は安全に fftwq_complex* に再解釈_キャストされますか?

次の例が機能するとは思っていませんでしたが、実際には機能します (g++ 4.6.4、--std=c++0x を使用):

2 つの注意事項:

  • 目標は、同じデータに対してfftwblitz::Array演算の両方をコピーする必要なく使用できるようにすると同時にsin()、4 倍精度の複素変数のような汎用関数を使用できるようにすることです。
  • blitz-part は正常に動作しますが、これは予想どおりです。しかし、(私にとって)驚いたことは、そのfftwq_complex*部分もうまく機能することでした.
  • これは、正しい simd アライメントを保証するために使用さfftw::allocatorれる単純な置き換えですが、それはこの質問にとって重要ではないため、省略しました (少なくとも、これはこの質問にとって重要ではないと思います)。std::allocatorfftwq_malloc

私の質問は、私が踏んでいる氷はどれくらい薄いですか?

0 投票する
0 に答える
127 参照

c++ - Boost.Multiprecision が可能な最大のワード サイズを使用しないのはなぜですか?

Boost.Multiprecion ライブラリの cpp_int バックエンドが 64 ビット アーキテクチャのワード (リム) として 32 ビットの符号なし整数を使用していることに気付きました。64 ビット ワードを使用するための要件は、コンパイラでネイティブの 128 ビット整数を使用できることです (これがヒントになる可能性があります)。何故ですか?

「手がかり」についての詳細。は、 file でネイティブの 128 ビット整数をサポートしていないコンパイラ用limb_typeとして定義されています。というタイプもあります。detail::largest_unsigned_type<32>::typeboost/multiprecision/cpp_int/cpp_int_config.hppdouble_limb_type

0 投票する
1 に答える
177 参照

fortran - mpfun90 のインストール方法は?

Fortran で多倍精度プログラムを作成しようとしています。私はすでに Fortran で倍精度プログラムを作成しています。誰でも多精度に変換するのを手伝ってくれますか? D. Baily multiprecision Library ( http://crd-legacy.lbl.gov/~dhbailey/mpdist/ for mpfun90) を見つけましたが、インストールできませんでした。Ubuntu に MPFUN90 をインストールするにはどうすればよいですか? 誰かがそれを手伝ってくれますか(段階的に)?gfortran コンパイラを使用しています。

0 投票する
1 に答える
112 参照

floating-point - 多精度浮動小数点 `scipy.misc.comb`

mpmath非常に小さな確率を計算するために、二項ベータ関数の適合を作成するために使用しています。

必要な関数のほとんどは既に mpmath に含まれているか、簡単に書き直すことができます。残念ながらそうでscipy.misc.combはありません。ソースコードを調べてみましたが、コードが見つからないファイルからインポートされた関数に基づいているようです。binom

for/while ループを使用して階乗を計算せずに、scipy の櫛関数を書き直す (または自分で書く) にはどうすればよいですか?