2017-05-24 8 views
-1

私はいくつかのmatlabコードをC++に変換しました。コードの一部の行には約25万の長さがあります。さらに、「2.209647215146515615616515615615103202897891 316e-258」のような非常に大きな仮数があり、精度は私にとって重要です(数値はゼロに近いですが、ゼロに置き換えることはできません)。matlabを長い線の方程式をC++に変換するには?

  • まず:ビルド時間がかかりすぎる

    これらのコードは完全にMathWorks社のMATLABで実行する(高速かつ正確な)が、C++では、いくつかの問題があります。

  • 第2回:ビルドに長い時間を費やした後、非常に非常に遅く動作します。 私はVisual Studio 2015を使用しています。このコードを書き込むと、膨大なサイズの行と前処理タスクが原因で作業が停止し、再起動する必要があります。 C++やVisual Studio IDEで長い行のコードや非常に大きな数値を扱う方法はありますか?

+4

問題をローカライズして[mcve]を提供してください。表現を単純化できませんか? – m7913d

+0

'unsigned long long'を試しましたか? – pandoragami

+1

@pandoragamiまず、unsigned long longは整数のためだけであり、この質問はdoubleを使用しているので動作しません。次に、unsigned long longは20桁前後の数字しか保持できませんが、これにはパーケージで約250桁の数字が必要です。 –

答えて

2

あなたはGMPが 符号付き整数、有理数上で動作し、任意精度演算のための無料のライブラリです

をgmplib.org、および浮動小数点数からGMPをしようとする場合があります。 は、GMPが実行されるマシンの で使用可能なメモリが暗示しているものを除いて、精度に実用的な制限はありません。 GMPは豊富なセットの 関数を持ち、関数は通常のインターフェースを持っています。

あなたはVisual Studioを使用しているため、あなたの質問は非常に幅広く、既存のライブラリでこれをコンパイルするのは難しいかもしれません。私はあなたがLinuxに行き、それを "科学的計算"のために働かせることをお勧めします。

関連する問題