次の機能を持つ Haskell 線形代数ライブラリを探しています。
- 行列乗算
- 行列加算
- 行列転置
- ランク計算
- 行列反転はプラスです
次のプロパティがあります。
- 任意の要素 (スカラー) 型 (特に、インスタンスではない要素型)。
Storable
私の要素は のインスタンスでありNum
、さらに乗法逆数を計算できます。要素は数学的に有限体 ( 2 256 ) を形成します。上記の機能を実装するには、これで十分です。 - 任意の行列サイズ (おそらく100x100のようなものが必要になりますが、行列のサイズはユーザーの入力に依存するため、使用可能なメモリまたは計算能力以外によって制限されるべきではありません)
- 可能な限り高速ですが、任意の要素のライブラリは、任意の (非
Int
、Double
または同様の) 型の間接性のために、(FFI を介してインターフェースされた) 作業を行う C/Fortran ライブラリのようにはおそらく実行されないことを認識しています。要素がタッチされると、少なくとも 1 つのポインターが逆参照される - (Haskell で書かれているため、これは私にとって実際の要件ではありませんが、私の要素は
Storable
インスタンスではないため、ライブラリは Haskell で作成する必要があります)
私はすでに非常に一生懸命試し、有望と思われるものすべてを評価しました (Hackage のほとんどのライブラリは、私にはうまくいかないと直接述べています)。特に、次を使用してテストコードを作成しました。
- hmatrix
Storable
、要素を想定 - Vecですが、ドキュメントには次のように記載されています。
低次元 : 次元は GHC が処理するものによってのみ制限されますが、ライブラリは 2、3、および 4 次元を対象としています。一般的な線形代数については、優れた hmatrix ライブラリと blas バインディングを確認してください。
アップデート
何もないように見えるので、そのようなライブラリを開発することを目的としたプロジェクトを GitHubで開始しました。現在の状態は非常に最小限であり、速度についてはまったく最適化されておらず、最も基本的な機能のみがテストされているため、動作するはずです。しかし、それを使用したり、開発を手伝ったりすることに興味がある場合は、私に連絡するか (私のWeb サイトで私のメール アドレスを確認できます)、またはプル リクエストを送ってください。