{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.CReal.Extra
  ( module Data.CReal
  ) where

import Data.CReal
import GHC.TypeLits
import Test.QuickCheck (Arbitrary(..), choose)
import Test.QuickCheck.Checkers (EqProp(..), eq)

instance KnownNat n => EqProp (CReal n) where
  (=-=) = eq

instance KnownNat n => Arbitrary (CReal n) where
  arbitrary = do
    integralPart <- fromInteger <$> arbitrary
    fractionalPart <- choose (-0.5, 0.5)
    pure (integralPart + fractionalPart)