LapackをC++で使う

Fortranで作られた Lapackライブラリの関数を C++ の プログラムから利用する具体例のメモです。
これらのメモではFortranの原始関数を呼ぶ C++の簡易関数を以下の点に注意して作成しています。

  1. 簡易関数は任意サイズの正方行列を扱える template 関数とする。
  2. 簡易関数はLapack関数が必要とする作業用変数をstaticに用意する。
  3. 簡易関数は入力用変数を上書きしない。出力用変数は外から与える。
  4. 簡易関数は行列をC言語形式で扱う。

LapackにはそれをC言語に翻訳した CLapack や、さらにそれを C++流に使えるようにした Lapack++ がありますが、 原本の Fortranの関数を以下で紹介するようにC++で呼び出すのが もっとも簡潔でしょう。



Lapackでの関数の命名法

d実数
z複素数
ge一般
gb一般帯
gt一般3重対角
sy対称
sb対称帯
st対称3重対角
heエルミート
hbエルミート帯
htエルミート3重対角
sv線形方程式を解く
ev固有値方程式を解く
gv一般化固有値方程式を解く