問題タブ [ublas]
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.
c++ - 疎行列実装の C++11 互換性
ビルダーとして acompressed_matrix
を使用して aを作成しようとしています:coordinate_matrix
これは、boost 1.54 と clang を使用すると正常に動作するようですが、std=c++11 を使用してコンパイルすると、エラーがスローされます。
C++ 11 とブースト 1.54 の既知の非互換性はありますか? それとも、C++11 エラーを起こしたのでしょうか? 1.55 の変更ログには、ublas もマトリックスも記載されていないため、まだ存在していると思います。
これは、gcc 4.8.2 と clang 3.4 の両方で発生します。
c++ - Boost Ublas Matrix のすべての要素の平方根
Boost Ublas 行列のすべての要素の平方根を計算しようとしています。これまでのところ、私はこれを持っていますが、うまくいきます。
しかし、私は std::transform を使用せず、代わりに次のようなことをしたいと思います: m3 = sqrtf(m1);
それを機能させる方法はありますか?私のアプリケーションはパフォーマンスに非常に敏感であるため、代替手段は、効率が損なわれない場合にのみ受け入れられます。
PS log10f、cos、acos、sin、asin、pow などの他の多くの操作に対してこれを実行したいと思います。これらすべてがコードに必要です。
c++ - boost::numeric::ublas::matrix_vector_range を boost::numeric::ublas::basic_range で使用する方法正しく
をboost::numeric::ublas::compressed_matrix<std::complex<double>,boost::numeric::ublas::row_major,0,boost::numeric::ublas::unbounded_array<std::size_t>>
介して対角部分を作成して抽出しboost::numeric::ublas::matrix_vector_range
ます。ソースは次のとおりです。
そしてそれはうまくいきます。
次に、 FORTRAN 関数に を渡す必要がありcompressed_matrix
、FORTRAN 関数では行インデックスと列インデックスが である必要があるためint
、 に変更std::size_t
しint
ます。新しいソース コードは次のとおりです。
その後g++ -std=c++11 -O2 -march=native -DNEBUG
、ソース コードをコンパイルし、実行可能ファイル (gcc バージョン 4.9.1) を実行します。次のエラーが表示されます。
次に、 /usr/ include /boost/numeric/ublas/storage.hppの 892 行目に移動すると、次のように表示されます。
しかし、私の場合start_
は 未満ですstop
。したがって、なぜそのようなエラーが表示されるのかわかりません。何が原因なのですか?
c++ - Armadillo+Atlas、Armadillo+OpenBLAS、Armadillo+uBLAS、Armadillo+MKLとは?
多くのウェブサイトで、彼らは Armadillo+何かについて話しています。彼らはどういう意味ですか?
私はArmadilloライブラリを次の形で使用しています
Linux 環境で。
このウェブサイトでは
Armadillo+OpenBLAS
が挙げられています。彼らはどういう意味ですか?使い方はArmadillo+OpenBLAS
?
アップデート
1年以上経った今。orArmadillo
などの実装のラッパーであるこのポイントを追加するだけです。行列演算の実装ではありません。BLAS
OpenBLAS
c++ - BOOST UBLAS MyMatrix を使用した XLW 製の XLL データ型を Double に変換 ** 失敗
XLW を使用して、Excel に登録する関数の XLL を作成しています。XLL は、C++ DLL 内の実際の数学モデルを呼び出します。
UBLAS で BOOST を使用して、XLL MyMatrix データ型から C++ DLL が入力に使用する double ** への変換を支援しています。これは正しくビルドされ、開発環境で配列の入力と出力を持つ関数を正しく使用できます。
しかし、InstallShield インストーラーを使用して Excel アドインをインストール先のコンピューターにインストールすると、配列入力を使用する関数は、C++ DLL からの関数の戻り値ではなく、"Conversion to double" エラーを返します。
これは私がこれまでに試したことですが、運が悪いです:
1. BOOST BCP を使用してすべての Numeric ライブラリを収集し (UBLAS は登場しませんでした)、それを Visual Studio 2013 プロジェクトに含めました。次に、インクルードから BOOST_ROOT を取り出し、プロジェクトのプロパティを使用して、プロジェクトにあったものを使用するようにしました (私の限られた理解から)
両方のビット数の Microsoft C++ 再頒布可能パッケージをすべて、対象のコンピューターにインストールします。
コピー先のコンピューターに BOOST をダウンロードしてビルドし、BOOST_ROOT の環境変数を作成します。宛先コンピューターに XLW をインストールし、宛先コンピューターの開発環境のすべての環境変数を一致させました。
Dependency Walker を使用して、すべての依存 DLL が対象のコンピューターにあることを確認しました。
すべて運が悪い。インストーラーには何を含める必要がありますか? お時間をいただきありがとうございます。
開発環境: Visual Studio 2013 および 2015 を搭載した Windows 10
宛先コンピューター: Office 2016 を搭載した Windows 10
MyMatrix 宣言:
関数宣言の MyMatrix:
C++ DLL を呼び出し、Box を使用して MyMatrix を double に変換 **
変換を行うボックス