hmatrixを使用したかったのですが、それが主張しDouble
、丸め誤差が発生することがあります。ソースを見て、試してみました
type instance DoubleOf Rational = Rational
しかし、DoubleOf
エクスポートされていません (Numeric.ContainerBool
は非表示になっています)。これにはおそらく理由があります。
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