module Satchmo.BinaryTwosComplement.Numeric where import qualified Satchmo.BinaryTwosComplement.Op.Fixed as F import qualified Satchmo.Numeric as N instance N.Constant F.Number where constant :: forall (m :: * -> *). MonadSAT m => Integer -> m Number constant = forall (m :: * -> *). MonadSAT m => Int -> Integer -> m Number F.constantWidth Int 1 instance N.Create F.Number where create :: forall (m :: * -> *). MonadSAT m => Int -> m Number create = forall (m :: * -> *). MonadSAT m => Int -> m Number F.number instance N.Numeric F.Number where equal :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean equal = forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean F.equals greater_equal :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean greater_equal = forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean F.ge plus :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number plus = forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number F.add minus :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number minus = forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number F.subtract times :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number times = forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number F.times