30

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

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

并具有以下属性:

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

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

  • hmatrix , 假设Storable元素
  • Vec,但文档指出:

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

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

更新

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

4

1 回答 1

-2

好吧,我确实很确定我的答案有多大的相关性,但我对 GNU GSL 库有很好的经验,并且有一个 haskel 的包装器:

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

看看吧,也许对你有帮助

于 2012-09-12T09:12:45.077 回答