scale )
where
-import Test.Tasty.QuickCheck ( Arbitrary(..) )
+import Test.Tasty.QuickCheck ( Arbitrary( arbitrary ) )
-- | Represents a point in three dimensions. We use a custom type (as
instance Num Point where
- (Point x1 y1 z1) + (Point x2 y2 z2) = Point (x1+x2) (y1+y2) (z1+z2)
+ (Point x1 y1 z1) + (Point x2 y2 z2) = Point (x1 + x2) (y1 + y2) (z1 + z2)
(Point x1 y1 z1) - (Point x2 y2 z2) = Point (x1-x2) (y1-y2) (z1-z2)
(Point x1 y1 z1) * (Point x2 y2 z2) = Point (x1*x2) (y1*y2) (z1*z2)
abs (Point x y z) = Point (abs x) (abs y) (abs z)
fromInteger n =
Point coord coord coord
where
- coord = fromInteger n
+ coord = fromInteger n :: Double
-- | Scale a point by a constant.
{-# INLINE dot #-}
dot :: Point -> Point -> Double
dot (Point x1 y1 z1) (Point x2 y2 z2) =
- (x2 - x1)^(2::Int) + (y2 - y1)^(2::Int) + (z2 - z1)^(2::Int)
+ (x2 - x1) ^ (2::Int) + (y2 - y1) ^ (2::Int) + (z2 - z1) ^ (2::Int)