任意元素类型的Haskell线性代数矩阵库

时间:2012-09-05 19:37:26

标签: haskell matrix linear-algebra

我正在寻找具有以下功能的Haskell线性代数库:

  • 矩阵乘法
  • Matrix添加
  • Matrix transposition
  • 排名计算
  • 矩阵反转是一个加号

并具有以下属性:

  • 任意元素(标量)类型(特别是 Storable实例的元素类型)。我的元素是Num的实例,另外可以计算乘法逆。元素在数学上形成有限域( 2 256 )。这应该足以实现上述功能。
  • 任意矩阵大小(我可能需要像 100x100 这样的东西,但矩阵大小将取决于用户的输入,因此除了内存或可用的计算能力之外,它不应受其他任何限制)
  • 尽可能快,但我知道任意元素的库可能不会像执行工作的C / Fortran库(通过FFI接口)那样执行,因为任意的间接(非{{1} },Int或类似的)类型。触摸元素时,至少有一个指针被解除引用
  • (用Haskell编写,这对我来说不是真正的要求,但由于我的元素不是Double个实例,所以库必须用Haskell编写)

我已经非常努力地评估了所有看起来很有希望的东西(Hackage上的大多数图书馆直接声明它们不适合我)。特别是我使用以下方法编写了测试代码:

  • hmatrix,假设Storable元素
  • Vec,但documentation州:

      

    低维度:虽然维度仅受GHC处理的限制,但该库适用于2,3和4维度。对于一般线性代数,请查看优秀的hmatrix库并进行绑定

  •   
  我查看了更多库的代码和文档,但似乎没有什么能满足我的需求: - (。

更新

由于似乎什么都没有,我开始了一个project on GitHub,旨在开发这样一个库。当前状态非常简约,根本没有针对速度进行优化,只有最基本的功能才有测试,因此应该可以工作。但是,您是否有兴趣使用或帮助开发它:联系我(您将在我的web site上找到我的邮件地址)或发送拉取请求。

1 个答案:

答案 0 :(得分:-2)

好吧,我注意到我的答案是多么相关,但我对GNU GSL库有很好的经验,并且有一个haskel的包装器:

http://hackage.haskell.org/package/bindings-gsl

检查出来,也许它会帮助你