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 = Int -> Integer -> m Number 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 = Int -> m Number 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 = Number -> Number -> m Boolean forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean F.equals greater_equal :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean greater_equal = Number -> Number -> m Boolean forall (m :: * -> *). MonadSAT m => Number -> Number -> m Boolean F.ge plus :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number plus = Number -> Number -> m Number forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number F.add minus :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number minus = Number -> Number -> m Number forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number F.subtract times :: forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number times = Number -> Number -> m Number forall (m :: * -> *). MonadSAT m => Number -> Number -> m Number F.times