2011-06-28 12 views
3

私はX = B(A^-1)問題を繰り返し打つことを望んでいます。すなわち、線形システムを解く。 C++の場合、数値ソルバーは128ビットのlong double(quad)をサポートしていますか?お気に入り/ベストA.X = Bロングダブルをサポートするソルバー?

私の2Dデータはすべて単一のstd :: vectorとして格納されるため、Cスタイルの配列を使用することは大きなプラスです。

私はGCCかICCのどちらかでlinux上でコードをコンパイルしたいと考えていました。

+1

私は128bitの面が問題かもしれないと思います。最も効率的なlin algパッケージ(つまりlapackとその親)は、blasライブラリ(intel mklやamd acmlなど)を呼び出すことによって、高いパフォーマンスを実現します。私はblasライブラリを、倍精度ではなく、単精度と倍精度をサポートするだけで見たことがあります。また、あなたのハードウェアは4倍精度をサポートしていますか? –

+0

まあ、コンパイラは、単純な算術のためにそれらを使うことができるようです。 xmmには128ビットの権利がありますか?私は自宅でQ6600 Intelプロセッサを使用しており、これまでのサポートは一度も期待していません。 – Mikhail

+3

sse2命令セットからのxmmレジスタについて言えば、それらは128ビット幅ですが、4倍精度ではなく、 'ベクトル化'浮動小数点演算を提供します。つまり、4つの単精度または2つの倍精度演算で動作します単一のasm命令。良いblasライブラリはsse2/sse3/sse4などを利用しています。 –

答えて

4

多くのC++線形代数ライブラリは、NT2、Boost.uBLAS、Eigen(リンクについてはWhat are the most widely used C++ vector/matrix math/linear algebra libraries, and their cost and benefit tradeoffs?を参照)などのテンプレートに基づいています。したがって、あなたのコンパイラ/ライブラリがクワッドで数学を行うことができるならば、それらはクワッドをサポートできなければなりません。例えば、Eigenでは、タイプEigen::Matrix<long double, Dynamic, Dynamic>は、長い倍精度を含む任意のサイズの行列を表し、標準関数を使用してそのような行列を解くことができます。

+0

これは疎な行列ソルバーのようです。だから私が探していたものではありません。とにかく助けてくれてありがとう! – Mikhail

関連する問題