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