2014-05-22 36 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