如何在Haskell中计算精确(整数)行列式?

时间:2014-05-22 08:50:13

标签: haskell matrix hmatrix

我想使用hmatrix,但它坚持使用Double,这有时会产生舍入错误。看来源,我试过

type instance DoubleOf Rational = Rational

DoubleOf未导出(Numeric.ContainerBool已隐藏),这可能是有原因的。

1 个答案:

答案 0 :(得分:4)

您可以使用bed-and-breakfast package对矩阵执行精确操作。

此处的示例ghci会话:

>>> import Numeric.Matrix
>>> import Data.Ratio
>>> let m = fromList [[1 % 2, 2 % 3], [3 % 4, 4 % 5]] :: Matrix Rational
>>> det m
(-1) % 10
>>> m * m
 3 % 4  13 % 15
 39 % 40  57 % 50

>>> m^4
 563 % 400  819 % 500
 7371 % 4000  10723 % 5000