@@ -22,23 +22,23 @@ spec =
2222 it " Should subtract two scalar arrays" $ do
2323 scalar @ Int 4 - 2 `shouldBe` 2
2424 it " Should multiply two scalar arrays" $ do
25- scalar @ Double 4 `mul` 2 `shouldBe ` 8
25+ scalar @ Double 4 `mul` 2 `shouldBeEps ` 8
2626 it " Should divide two scalar arrays" $ do
27- div @ Double 8 2 `shouldBe ` 4
27+ div @ Double 8 2 `shouldBeEps ` 4
2828 it " Should add two matrices" $ do
2929 matrix @ Int (2 ,2 ) [[1 ,1 ],[1 ,1 ]] + matrix @ Int (2 ,2 ) [[1 ,1 ],[1 ,1 ]]
3030 `shouldBe`
3131 matrix @ Int (2 ,2 ) [[2 ,2 ],[2 ,2 ]]
3232 it " Should take cubed root" $ do
33- 3 `shouldBe ` cbrt @ Double 27
33+ 3 `shouldBeEps ` cbrt @ Double 27
3434 it " Should take square root" $ do
35- 2 `shouldBe ` sqrt @ Double 4
35+ 2 `shouldBeEps ` sqrt @ Double 4
3636 it " Should lt Array" $ do
37- 2 `A.lt` (3 :: Array Double ) `shouldBe ` True
37+ 2 `A.lt` (3 :: Array Double ) `shouldBeEps ` True
3838 it " Should gt Array" $ do
39- 2 `A.gt` (3 :: Array Double ) `shouldBe ` False
39+ 2 `A.gt` (3 :: Array Double ) `shouldBeEps ` False
4040 it " Should eq Array" $ do
41- 3 == (3 :: Array Double ) `shouldBe ` True
41+ 3 == (3 :: Array Double ) `shouldBeEps ` True
4242 it " Should and Array" $ do
4343 (mkArray @ CBool [1 ] [0 ] `and` mkArray [1 ] [1 ])
4444 `shouldBe` mkArray [1 ] [0 ]
@@ -92,3 +92,12 @@ spec =
9292 isZero (scalar @ Double (acos 2 )) `shouldBe` scalar @ Double 0
9393 isZero (scalar @ Double 0 ) `shouldBe` scalar @ Double 1
9494 isZero (scalar @ Double 1 ) `shouldBe` scalar @ Double 0
95+
96+ shouldBeEps :: Array Double -> Array Double -> Expectation
97+ actual `shouldBeEps` expected = expect err_msg (cmpEps actual expected)
98+ where
99+ err_msg = " expected: " ++ show expected ++ " \n but got: " ++ show actual)
100+ cmpEps =
101+ let x :: Double
102+ x = fromIntegral $ abs $ actual - expected
103+ in x <= 1e-14
0 commit comments