@@ -22,23 +22,23 @@ spec =
22
22
it " Should subtract two scalar arrays" $ do
23
23
scalar @ Int 4 - 2 `shouldBe` 2
24
24
it " Should multiply two scalar arrays" $ do
25
- scalar @ Double 4 `mul` 2 `shouldBe ` 8
25
+ scalar @ Double 4 `mul` 2 `shouldBeEps ` 8
26
26
it " Should divide two scalar arrays" $ do
27
- div @ Double 8 2 `shouldBe ` 4
27
+ div @ Double 8 2 `shouldBeEps ` 4
28
28
it " Should add two matrices" $ do
29
29
matrix @ Int (2 ,2 ) [[1 ,1 ],[1 ,1 ]] + matrix @ Int (2 ,2 ) [[1 ,1 ],[1 ,1 ]]
30
30
`shouldBe`
31
31
matrix @ Int (2 ,2 ) [[2 ,2 ],[2 ,2 ]]
32
32
it " Should take cubed root" $ do
33
- 3 `shouldBe ` cbrt @ Double 27
33
+ 3 `shouldBeEps ` cbrt @ Double 27
34
34
it " Should take square root" $ do
35
- 2 `shouldBe ` sqrt @ Double 4
35
+ 2 `shouldBeEps ` sqrt @ Double 4
36
36
it " Should lt Array" $ do
37
- 2 `A.lt` (3 :: Array Double ) `shouldBe ` True
37
+ 2 `A.lt` (3 :: Array Double ) `shouldBeEps ` True
38
38
it " Should gt Array" $ do
39
- 2 `A.gt` (3 :: Array Double ) `shouldBe ` False
39
+ 2 `A.gt` (3 :: Array Double ) `shouldBeEps ` False
40
40
it " Should eq Array" $ do
41
- 3 == (3 :: Array Double ) `shouldBe ` True
41
+ 3 == (3 :: Array Double ) `shouldBeEps ` True
42
42
it " Should and Array" $ do
43
43
(mkArray @ CBool [1 ] [0 ] `and` mkArray [1 ] [1 ])
44
44
`shouldBe` mkArray [1 ] [0 ]
@@ -92,3 +92,12 @@ spec =
92
92
isZero (scalar @ Double (acos 2 )) `shouldBe` scalar @ Double 0
93
93
isZero (scalar @ Double 0 ) `shouldBe` scalar @ Double 1
94
94
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