2014-05-22 35 views
1

我想使用hmatrix但它坚持Double,这有时会给出舍入误差。望着源,我想如何计算Haskell中的确切(整数)行列式?

type instance DoubleOf Rational = Rational 

DoubleOf不外传(Numeric.ContainerBool是隐藏的),而这可能是一个原因。

+2

您是否尝试过[这个数字矩阵包(http://hackage.haskell.org/package/bed-and-breakfast)?显然它声称做你想做的事。 – fizruk

回答

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 
+0

但是包(来自hackage的版本0.4.3)不能用ghc-7.8.2进行编译(''typeOf'不是类'Typeable'') – d8d0d65b3f7cf42

+1

的(可见)方法,而是版本0.5 https:// github。 com/scravy /床和早餐。 – d8d0d65b3f7cf42

+0

我想他们只是没有上传一个新版本到hackage。 – fizruk