-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Constructive abstract algebra -- -- Constructive abstract algebra @package algebra @version 4.3 module Numeric.Partial.Semigroup class PartialSemigroup a padd :: PartialSemigroup a => a -> a -> Maybe a instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Types.Int instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Integer.Type.Integer instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Natural.Natural instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Int.Int8 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Int.Int16 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Int.Int32 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Int.Int64 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Types.Word instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Word.Word8 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Word.Word16 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Word.Word32 instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Word.Word64 instance Numeric.Partial.Semigroup.PartialSemigroup a => Numeric.Partial.Semigroup.PartialSemigroup (GHC.Base.Maybe a) instance Numeric.Partial.Semigroup.PartialSemigroup GHC.Types.Bool instance Numeric.Partial.Semigroup.PartialSemigroup () instance (Numeric.Partial.Semigroup.PartialSemigroup a, Numeric.Partial.Semigroup.PartialSemigroup b) => Numeric.Partial.Semigroup.PartialSemigroup (a, b) instance (Numeric.Partial.Semigroup.PartialSemigroup a, Numeric.Partial.Semigroup.PartialSemigroup b, Numeric.Partial.Semigroup.PartialSemigroup c) => Numeric.Partial.Semigroup.PartialSemigroup (a, b, c) instance (Numeric.Partial.Semigroup.PartialSemigroup a, Numeric.Partial.Semigroup.PartialSemigroup b, Numeric.Partial.Semigroup.PartialSemigroup c, Numeric.Partial.Semigroup.PartialSemigroup d) => Numeric.Partial.Semigroup.PartialSemigroup (a, b, c, d) instance (Numeric.Partial.Semigroup.PartialSemigroup a, Numeric.Partial.Semigroup.PartialSemigroup b, Numeric.Partial.Semigroup.PartialSemigroup c, Numeric.Partial.Semigroup.PartialSemigroup d, Numeric.Partial.Semigroup.PartialSemigroup e) => Numeric.Partial.Semigroup.PartialSemigroup (a, b, c, d, e) instance (Numeric.Partial.Semigroup.PartialSemigroup a, Numeric.Partial.Semigroup.PartialSemigroup b) => Numeric.Partial.Semigroup.PartialSemigroup (Data.Either.Either a b) module Numeric.Partial.Monoid class PartialSemigroup a => PartialMonoid a pzero :: PartialMonoid a => a instance Numeric.Partial.Monoid.PartialMonoid GHC.Types.Bool instance Numeric.Partial.Monoid.PartialMonoid GHC.Types.Int instance Numeric.Partial.Monoid.PartialMonoid GHC.Integer.Type.Integer instance Numeric.Partial.Monoid.PartialMonoid GHC.Natural.Natural instance Numeric.Partial.Monoid.PartialMonoid GHC.Int.Int8 instance Numeric.Partial.Monoid.PartialMonoid GHC.Int.Int16 instance Numeric.Partial.Monoid.PartialMonoid GHC.Int.Int32 instance Numeric.Partial.Monoid.PartialMonoid GHC.Int.Int64 instance Numeric.Partial.Monoid.PartialMonoid GHC.Types.Word instance Numeric.Partial.Monoid.PartialMonoid GHC.Word.Word8 instance Numeric.Partial.Monoid.PartialMonoid GHC.Word.Word16 instance Numeric.Partial.Monoid.PartialMonoid GHC.Word.Word32 instance Numeric.Partial.Monoid.PartialMonoid GHC.Word.Word64 instance Numeric.Partial.Monoid.PartialMonoid () instance Numeric.Partial.Semigroup.PartialSemigroup a => Numeric.Partial.Monoid.PartialMonoid (GHC.Base.Maybe a) instance (Numeric.Partial.Monoid.PartialMonoid a, Numeric.Partial.Monoid.PartialMonoid b) => Numeric.Partial.Monoid.PartialMonoid (a, b) instance (Numeric.Partial.Monoid.PartialMonoid a, Numeric.Partial.Monoid.PartialMonoid b, Numeric.Partial.Monoid.PartialMonoid c) => Numeric.Partial.Monoid.PartialMonoid (a, b, c) instance (Numeric.Partial.Monoid.PartialMonoid a, Numeric.Partial.Monoid.PartialMonoid b, Numeric.Partial.Monoid.PartialMonoid c, Numeric.Partial.Monoid.PartialMonoid d) => Numeric.Partial.Monoid.PartialMonoid (a, b, c, d) instance (Numeric.Partial.Monoid.PartialMonoid a, Numeric.Partial.Monoid.PartialMonoid b, Numeric.Partial.Monoid.PartialMonoid c, Numeric.Partial.Monoid.PartialMonoid d, Numeric.Partial.Monoid.PartialMonoid e) => Numeric.Partial.Monoid.PartialMonoid (a, b, c, d, e) module Numeric.Partial.Group class PartialMonoid a => PartialGroup a where pnegate = pminus pzero pminus a b = padd a =<< pnegate b psubtract a b = pnegate a >>= (`padd` b) pnegate :: PartialGroup a => a -> Maybe a pminus :: PartialGroup a => a -> a -> Maybe a psubtract :: PartialGroup a => a -> a -> Maybe a instance Numeric.Partial.Group.PartialGroup GHC.Types.Int instance Numeric.Partial.Group.PartialGroup GHC.Integer.Type.Integer instance Numeric.Partial.Group.PartialGroup GHC.Int.Int8 instance Numeric.Partial.Group.PartialGroup GHC.Int.Int16 instance Numeric.Partial.Group.PartialGroup GHC.Int.Int32 instance Numeric.Partial.Group.PartialGroup GHC.Int.Int64 instance Numeric.Partial.Group.PartialGroup GHC.Types.Word instance Numeric.Partial.Group.PartialGroup GHC.Word.Word8 instance Numeric.Partial.Group.PartialGroup GHC.Word.Word16 instance Numeric.Partial.Group.PartialGroup GHC.Word.Word32 instance Numeric.Partial.Group.PartialGroup GHC.Word.Word64 instance Numeric.Partial.Group.PartialGroup GHC.Natural.Natural instance Numeric.Partial.Group.PartialGroup () instance (Numeric.Partial.Group.PartialGroup a, Numeric.Partial.Group.PartialGroup b) => Numeric.Partial.Group.PartialGroup (a, b) instance (Numeric.Partial.Group.PartialGroup a, Numeric.Partial.Group.PartialGroup b, Numeric.Partial.Group.PartialGroup c) => Numeric.Partial.Group.PartialGroup (a, b, c) instance (Numeric.Partial.Group.PartialGroup a, Numeric.Partial.Group.PartialGroup b, Numeric.Partial.Group.PartialGroup c, Numeric.Partial.Group.PartialGroup d) => Numeric.Partial.Group.PartialGroup (a, b, c, d) instance (Numeric.Partial.Group.PartialGroup a, Numeric.Partial.Group.PartialGroup b, Numeric.Partial.Group.PartialGroup c, Numeric.Partial.Group.PartialGroup d, Numeric.Partial.Group.PartialGroup e) => Numeric.Partial.Group.PartialGroup (a, b, c, d, e) module Numeric.Order.Class class Order a where a <~ b = maybe False (<= EQ) (order a b) a < b = order a b == Just LT a >~ b = b <~ a a > b = order a b == Just GT a ~~ b = order a b == Just EQ a /~ b = order a b /= Just EQ order a b | a <~ b = Just $ if b <~ a then EQ else LT | b <~ a = Just GT | otherwise = Nothing comparable a b = maybe False (const True) (order a b) (<~) :: Order a => a -> a -> Bool (<) :: Order a => a -> a -> Bool (>~) :: Order a => a -> a -> Bool (>) :: Order a => a -> a -> Bool (~~) :: Order a => a -> a -> Bool (/~) :: Order a => a -> a -> Bool order :: Order a => a -> a -> Maybe Ordering comparable :: Order a => a -> a -> Bool orderOrd :: Ord a => a -> a -> Maybe Ordering instance Numeric.Order.Class.Order GHC.Types.Bool instance Numeric.Order.Class.Order GHC.Integer.Type.Integer instance Numeric.Order.Class.Order GHC.Types.Int instance Numeric.Order.Class.Order GHC.Int.Int8 instance Numeric.Order.Class.Order GHC.Int.Int16 instance Numeric.Order.Class.Order GHC.Int.Int32 instance Numeric.Order.Class.Order GHC.Int.Int64 instance Numeric.Order.Class.Order GHC.Natural.Natural instance Numeric.Order.Class.Order GHC.Types.Word instance Numeric.Order.Class.Order GHC.Word.Word8 instance Numeric.Order.Class.Order GHC.Word.Word16 instance Numeric.Order.Class.Order GHC.Word.Word32 instance Numeric.Order.Class.Order GHC.Word.Word64 instance GHC.Classes.Ord a => Numeric.Order.Class.Order (Data.Set.Base.Set a) instance Numeric.Order.Class.Order () instance (Numeric.Order.Class.Order a, Numeric.Order.Class.Order b) => Numeric.Order.Class.Order (a, b) instance (Numeric.Order.Class.Order a, Numeric.Order.Class.Order b, Numeric.Order.Class.Order c) => Numeric.Order.Class.Order (a, b, c) instance (Numeric.Order.Class.Order a, Numeric.Order.Class.Order b, Numeric.Order.Class.Order c, Numeric.Order.Class.Order d) => Numeric.Order.Class.Order (a, b, c, d) instance (Numeric.Order.Class.Order a, Numeric.Order.Class.Order b, Numeric.Order.Class.Order c, Numeric.Order.Class.Order d, Numeric.Order.Class.Order e) => Numeric.Order.Class.Order (a, b, c, d, e) module Numeric.Additive.Class -- |
-- (a + b) + c = a + (b + c) -- sinnum 1 a = a -- sinnum (2 * n) a = sinnum n a + sinnum n a -- sinnum (2 * n + 1) a = sinnum n a + sinnum n a + a --class Additive r where sinnum1p y0 x0 = f x0 (1 + y0) where f x y | even y = f (x + x) (y `quot` 2) | y == 1 = x | otherwise = g (x + x) (pred y `quot` 2) x g x y z | even y = g (x + x) (y `quot` 2) z | y == 1 = x + z | otherwise = g (x + x) (pred y `quot` 2) (x + z) sumWith1 f = maybe (error "Numeric.Additive.Semigroup.sumWith1: empty structure") id . foldl' mf Nothing where mf Nothing y = Just $! f y mf (Just x) y = Just $! x + f y (+) :: Additive r => r -> r -> r -- | sinnum1p n r = sinnum (1 + n) r sinnum1p :: Additive r => Natural -> r -> r sumWith1 :: (Additive r, Foldable1 f) => (a -> r) -> f a -> r sum1 :: (Foldable1 f, Additive r) => f r -> r -- | an additive abelian semigroup -- -- a + b = b + a class Additive r => Abelian r -- | An additive semigroup with idempotent addition. -- --
-- a + a = a --class Additive r => Idempotent r sinnum1pIdempotent :: Natural -> r -> r class Additive m => Partitionable m -- | partitionWith f c returns a list containing f a b for each a b such -- that a + b = c, partitionWith :: Partitionable m => (m -> m -> r) -> m -> NonEmpty r instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (b -> r) instance Numeric.Additive.Class.Additive GHC.Types.Bool instance Numeric.Additive.Class.Additive GHC.Natural.Natural instance Numeric.Additive.Class.Additive GHC.Integer.Type.Integer instance Numeric.Additive.Class.Additive GHC.Types.Int instance Numeric.Additive.Class.Additive GHC.Int.Int8 instance Numeric.Additive.Class.Additive GHC.Int.Int16 instance Numeric.Additive.Class.Additive GHC.Int.Int32 instance Numeric.Additive.Class.Additive GHC.Int.Int64 instance Numeric.Additive.Class.Additive GHC.Types.Word instance Numeric.Additive.Class.Additive GHC.Word.Word8 instance Numeric.Additive.Class.Additive GHC.Word.Word16 instance Numeric.Additive.Class.Additive GHC.Word.Word32 instance Numeric.Additive.Class.Additive GHC.Word.Word64 instance Numeric.Additive.Class.Additive () instance (Numeric.Additive.Class.Additive a, Numeric.Additive.Class.Additive b) => Numeric.Additive.Class.Additive (a, b) instance (Numeric.Additive.Class.Additive a, Numeric.Additive.Class.Additive b, Numeric.Additive.Class.Additive c) => Numeric.Additive.Class.Additive (a, b, c) instance (Numeric.Additive.Class.Additive a, Numeric.Additive.Class.Additive b, Numeric.Additive.Class.Additive c, Numeric.Additive.Class.Additive d) => Numeric.Additive.Class.Additive (a, b, c, d) instance (Numeric.Additive.Class.Additive a, Numeric.Additive.Class.Additive b, Numeric.Additive.Class.Additive c, Numeric.Additive.Class.Additive d, Numeric.Additive.Class.Additive e) => Numeric.Additive.Class.Additive (a, b, c, d, e) instance Numeric.Additive.Class.Partitionable GHC.Types.Bool instance Numeric.Additive.Class.Partitionable GHC.Natural.Natural instance Numeric.Additive.Class.Partitionable () instance (Numeric.Additive.Class.Partitionable a, Numeric.Additive.Class.Partitionable b) => Numeric.Additive.Class.Partitionable (a, b) instance (Numeric.Additive.Class.Partitionable a, Numeric.Additive.Class.Partitionable b, Numeric.Additive.Class.Partitionable c) => Numeric.Additive.Class.Partitionable (a, b, c) instance (Numeric.Additive.Class.Partitionable a, Numeric.Additive.Class.Partitionable b, Numeric.Additive.Class.Partitionable c, Numeric.Additive.Class.Partitionable d) => Numeric.Additive.Class.Partitionable (a, b, c, d) instance (Numeric.Additive.Class.Partitionable a, Numeric.Additive.Class.Partitionable b, Numeric.Additive.Class.Partitionable c, Numeric.Additive.Class.Partitionable d, Numeric.Additive.Class.Partitionable e) => Numeric.Additive.Class.Partitionable (a, b, c, d, e) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (e -> r) instance Numeric.Additive.Class.Abelian () instance Numeric.Additive.Class.Abelian GHC.Types.Bool instance Numeric.Additive.Class.Abelian GHC.Integer.Type.Integer instance Numeric.Additive.Class.Abelian GHC.Natural.Natural instance Numeric.Additive.Class.Abelian GHC.Types.Int instance Numeric.Additive.Class.Abelian GHC.Int.Int8 instance Numeric.Additive.Class.Abelian GHC.Int.Int16 instance Numeric.Additive.Class.Abelian GHC.Int.Int32 instance Numeric.Additive.Class.Abelian GHC.Int.Int64 instance Numeric.Additive.Class.Abelian GHC.Types.Word instance Numeric.Additive.Class.Abelian GHC.Word.Word8 instance Numeric.Additive.Class.Abelian GHC.Word.Word16 instance Numeric.Additive.Class.Abelian GHC.Word.Word32 instance Numeric.Additive.Class.Abelian GHC.Word.Word64 instance (Numeric.Additive.Class.Abelian a, Numeric.Additive.Class.Abelian b) => Numeric.Additive.Class.Abelian (a, b) instance (Numeric.Additive.Class.Abelian a, Numeric.Additive.Class.Abelian b, Numeric.Additive.Class.Abelian c) => Numeric.Additive.Class.Abelian (a, b, c) instance (Numeric.Additive.Class.Abelian a, Numeric.Additive.Class.Abelian b, Numeric.Additive.Class.Abelian c, Numeric.Additive.Class.Abelian d) => Numeric.Additive.Class.Abelian (a, b, c, d) instance (Numeric.Additive.Class.Abelian a, Numeric.Additive.Class.Abelian b, Numeric.Additive.Class.Abelian c, Numeric.Additive.Class.Abelian d, Numeric.Additive.Class.Abelian e) => Numeric.Additive.Class.Abelian (a, b, c, d, e) instance Numeric.Additive.Class.Idempotent () instance Numeric.Additive.Class.Idempotent GHC.Types.Bool instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (e -> r) instance (Numeric.Additive.Class.Idempotent a, Numeric.Additive.Class.Idempotent b) => Numeric.Additive.Class.Idempotent (a, b) instance (Numeric.Additive.Class.Idempotent a, Numeric.Additive.Class.Idempotent b, Numeric.Additive.Class.Idempotent c) => Numeric.Additive.Class.Idempotent (a, b, c) instance (Numeric.Additive.Class.Idempotent a, Numeric.Additive.Class.Idempotent b, Numeric.Additive.Class.Idempotent c, Numeric.Additive.Class.Idempotent d) => Numeric.Additive.Class.Idempotent (a, b, c, d) instance (Numeric.Additive.Class.Idempotent a, Numeric.Additive.Class.Idempotent b, Numeric.Additive.Class.Idempotent c, Numeric.Additive.Class.Idempotent d, Numeric.Additive.Class.Idempotent e) => Numeric.Additive.Class.Idempotent (a, b, c, d, e) module Numeric.Algebra.Class -- | A multiplicative semigroup class Multiplicative r where pow1p x0 y0 = f x0 (y0 + 1) where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) productWith1 f = maybe (error "Numeric.Multiplicative.Semigroup.productWith1: empty structure") id . foldl' mf Nothing where mf Nothing y = Just $! f y mf (Just x) y = Just $! x * f y (*) :: Multiplicative r => r -> r -> r pow1p :: Multiplicative r => r -> Natural -> r productWith1 :: (Multiplicative r, Foldable1 f) => (a -> r) -> f a -> r pow1pIntegral :: (Integral r, Integral n) => r -> n -> r product1 :: (Foldable1 f, Multiplicative r) => f r -> r -- | A pair of an additive abelian semigroup, and a multiplicative -- semigroup, with the distributive laws: -- --
-- a(b + c) = ab + ac -- left distribution (we are a LeftNearSemiring) -- (a + b)c = ac + bc -- right distribution (we are a [Right]NearSemiring) ---- -- Common notation includes the laws for additive and multiplicative -- identity in semiring. -- -- If you want that, look at Rig instead. -- -- Ideally we'd use the cyclic definition: -- --
-- class (LeftModule r r, RightModule r r, Additive r, Abelian r, Multiplicative r) => Semiring r ---- -- to enforce that every semiring r is an r-module over itself, but -- Haskell doesn't like that. class (Additive r, Abelian r, Multiplicative r) => Semiring r class (Semiring r, Additive m) => LeftModule r m (.*) :: LeftModule r m => r -> m -> m class (Semiring r, Additive m) => RightModule r m (*.) :: RightModule r m => m -> r -> m class (LeftModule r m, RightModule r m) => Module r m -- | An additive monoid -- --
-- zero + a = a = a + zero --class (LeftModule Natural m, RightModule Natural m) => Monoidal m where sinnum 0 _ = zero sinnum n x0 = f x0 n where f x y | even y = f (x + x) (y `quot` 2) | y == 1 = x | otherwise = g (x + x) (pred y `quot` 2) x g x y z | even y = g (x + x) (y `quot` 2) z | y == 1 = x + z | otherwise = g (x + x) (pred y `quot` 2) (x + z) sumWith f = foldl' (\ b a -> b + f a) zero zero :: Monoidal m => m sinnum :: Monoidal m => Natural -> m -> m sumWith :: (Monoidal m, Foldable f) => (a -> m) -> f a -> m sum :: (Foldable f, Monoidal m) => f m -> m sinnumIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r -- | An associative algebra built with a free module over a semiring class Semiring r => Algebra r a mult :: Algebra r a => (a -> a -> r) -> a -> r class Semiring r => Coalgebra r c comult :: Coalgebra r c => (c -> r) -> c -> c -> r instance Numeric.Algebra.Class.Multiplicative GHC.Types.Bool instance Numeric.Algebra.Class.Multiplicative GHC.Natural.Natural instance Numeric.Algebra.Class.Multiplicative GHC.Integer.Type.Integer instance Numeric.Algebra.Class.Multiplicative GHC.Types.Int instance Numeric.Algebra.Class.Multiplicative GHC.Int.Int8 instance Numeric.Algebra.Class.Multiplicative GHC.Int.Int16 instance Numeric.Algebra.Class.Multiplicative GHC.Int.Int32 instance Numeric.Algebra.Class.Multiplicative GHC.Int.Int64 instance Numeric.Algebra.Class.Multiplicative GHC.Types.Word instance Numeric.Algebra.Class.Multiplicative GHC.Word.Word8 instance Numeric.Algebra.Class.Multiplicative GHC.Word.Word16 instance Numeric.Algebra.Class.Multiplicative GHC.Word.Word32 instance Numeric.Algebra.Class.Multiplicative GHC.Word.Word64 instance Numeric.Algebra.Class.Multiplicative () instance (Numeric.Algebra.Class.Multiplicative a, Numeric.Algebra.Class.Multiplicative b) => Numeric.Algebra.Class.Multiplicative (a, b) instance (Numeric.Algebra.Class.Multiplicative a, Numeric.Algebra.Class.Multiplicative b, Numeric.Algebra.Class.Multiplicative c) => Numeric.Algebra.Class.Multiplicative (a, b, c) instance (Numeric.Algebra.Class.Multiplicative a, Numeric.Algebra.Class.Multiplicative b, Numeric.Algebra.Class.Multiplicative c, Numeric.Algebra.Class.Multiplicative d) => Numeric.Algebra.Class.Multiplicative (a, b, c, d) instance (Numeric.Algebra.Class.Multiplicative a, Numeric.Algebra.Class.Multiplicative b, Numeric.Algebra.Class.Multiplicative c, Numeric.Algebra.Class.Multiplicative d, Numeric.Algebra.Class.Multiplicative e) => Numeric.Algebra.Class.Multiplicative (a, b, c, d, e) instance Numeric.Algebra.Class.Algebra r a => Numeric.Algebra.Class.Multiplicative (a -> r) instance Numeric.Algebra.Class.Semiring GHC.Integer.Type.Integer instance Numeric.Algebra.Class.Semiring GHC.Natural.Natural instance Numeric.Algebra.Class.Semiring GHC.Types.Bool instance Numeric.Algebra.Class.Semiring GHC.Types.Int instance Numeric.Algebra.Class.Semiring GHC.Int.Int8 instance Numeric.Algebra.Class.Semiring GHC.Int.Int16 instance Numeric.Algebra.Class.Semiring GHC.Int.Int32 instance Numeric.Algebra.Class.Semiring GHC.Int.Int64 instance Numeric.Algebra.Class.Semiring GHC.Types.Word instance Numeric.Algebra.Class.Semiring GHC.Word.Word8 instance Numeric.Algebra.Class.Semiring GHC.Word.Word16 instance Numeric.Algebra.Class.Semiring GHC.Word.Word32 instance Numeric.Algebra.Class.Semiring GHC.Word.Word64 instance Numeric.Algebra.Class.Semiring () instance (Numeric.Algebra.Class.Semiring a, Numeric.Algebra.Class.Semiring b) => Numeric.Algebra.Class.Semiring (a, b) instance (Numeric.Algebra.Class.Semiring a, Numeric.Algebra.Class.Semiring b, Numeric.Algebra.Class.Semiring c) => Numeric.Algebra.Class.Semiring (a, b, c) instance (Numeric.Algebra.Class.Semiring a, Numeric.Algebra.Class.Semiring b, Numeric.Algebra.Class.Semiring c, Numeric.Algebra.Class.Semiring d) => Numeric.Algebra.Class.Semiring (a, b, c, d) instance (Numeric.Algebra.Class.Semiring a, Numeric.Algebra.Class.Semiring b, Numeric.Algebra.Class.Semiring c, Numeric.Algebra.Class.Semiring d, Numeric.Algebra.Class.Semiring e) => Numeric.Algebra.Class.Semiring (a, b, c, d, e) instance Numeric.Algebra.Class.Algebra r a => Numeric.Algebra.Class.Semiring (a -> r) instance Numeric.Algebra.Class.Algebra () a instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Algebra r [a] instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Algebra r (Data.Sequence.Seq a) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Algebra r () instance (Numeric.Algebra.Class.Semiring r, GHC.Classes.Ord a) => Numeric.Algebra.Class.Algebra r (Data.Set.Base.Set a) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Algebra r Data.IntSet.Base.IntSet instance (Numeric.Algebra.Class.Algebra r a, Numeric.Algebra.Class.Algebra r b) => Numeric.Algebra.Class.Algebra r (a, b) instance (Numeric.Algebra.Class.Algebra r a, Numeric.Algebra.Class.Algebra r b, Numeric.Algebra.Class.Algebra r c) => Numeric.Algebra.Class.Algebra r (a, b, c) instance (Numeric.Algebra.Class.Algebra r a, Numeric.Algebra.Class.Algebra r b, Numeric.Algebra.Class.Algebra r c, Numeric.Algebra.Class.Algebra r d) => Numeric.Algebra.Class.Algebra r (a, b, c, d) instance (Numeric.Algebra.Class.Algebra r a, Numeric.Algebra.Class.Algebra r b, Numeric.Algebra.Class.Algebra r c, Numeric.Algebra.Class.Algebra r d, Numeric.Algebra.Class.Algebra r e) => Numeric.Algebra.Class.Algebra r (a, b, c, d, e) instance Numeric.Algebra.Class.Algebra r m => Numeric.Algebra.Class.Coalgebra r (m -> r) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Coalgebra r () instance (Numeric.Algebra.Class.Coalgebra r a, Numeric.Algebra.Class.Coalgebra r b) => Numeric.Algebra.Class.Coalgebra r (a, b) instance (Numeric.Algebra.Class.Coalgebra r a, Numeric.Algebra.Class.Coalgebra r b, Numeric.Algebra.Class.Coalgebra r c) => Numeric.Algebra.Class.Coalgebra r (a, b, c) instance (Numeric.Algebra.Class.Coalgebra r a, Numeric.Algebra.Class.Coalgebra r b, Numeric.Algebra.Class.Coalgebra r c, Numeric.Algebra.Class.Coalgebra r d) => Numeric.Algebra.Class.Coalgebra r (a, b, c, d) instance (Numeric.Algebra.Class.Coalgebra r a, Numeric.Algebra.Class.Coalgebra r b, Numeric.Algebra.Class.Coalgebra r c, Numeric.Algebra.Class.Coalgebra r d, Numeric.Algebra.Class.Coalgebra r e) => Numeric.Algebra.Class.Coalgebra r (a, b, c, d, e) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Coalgebra r [a] instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Coalgebra r (Data.Sequence.Seq a) instance (Numeric.Algebra.Class.Semiring r, GHC.Classes.Ord a) => Numeric.Algebra.Class.Coalgebra r (Data.Set.Base.Set a) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Coalgebra r Data.IntSet.Base.IntSet instance (Numeric.Algebra.Class.Semiring r, GHC.Classes.Ord a, Numeric.Additive.Class.Additive b) => Numeric.Algebra.Class.Coalgebra r (Data.Map.Base.Map a b) instance (Numeric.Algebra.Class.Semiring r, Numeric.Additive.Class.Additive b) => Numeric.Algebra.Class.Coalgebra r (Data.IntMap.Base.IntMap b) instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Types.Bool instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Natural.Natural instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Integer.Type.Integer instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Integer.Type.Integer instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Types.Int instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Types.Int instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Int.Int8 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Int.Int8 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Int.Int16 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Int.Int16 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Int.Int32 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Int.Int32 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Int.Int64 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Int.Int64 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Types.Word instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Types.Word instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Word.Word8 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Word.Word8 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Word.Word16 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Word.Word16 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Word.Word32 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Word.Word32 instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural GHC.Word.Word64 instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer GHC.Word.Word64 instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.LeftModule r () instance Numeric.Algebra.Class.LeftModule r m => Numeric.Algebra.Class.LeftModule r (e -> m) instance Numeric.Additive.Class.Additive m => Numeric.Algebra.Class.LeftModule () m instance (Numeric.Algebra.Class.LeftModule r a, Numeric.Algebra.Class.LeftModule r b) => Numeric.Algebra.Class.LeftModule r (a, b) instance (Numeric.Algebra.Class.LeftModule r a, Numeric.Algebra.Class.LeftModule r b, Numeric.Algebra.Class.LeftModule r c) => Numeric.Algebra.Class.LeftModule r (a, b, c) instance (Numeric.Algebra.Class.LeftModule r a, Numeric.Algebra.Class.LeftModule r b, Numeric.Algebra.Class.LeftModule r c, Numeric.Algebra.Class.LeftModule r d) => Numeric.Algebra.Class.LeftModule r (a, b, c, d) instance (Numeric.Algebra.Class.LeftModule r a, Numeric.Algebra.Class.LeftModule r b, Numeric.Algebra.Class.LeftModule r c, Numeric.Algebra.Class.LeftModule r d, Numeric.Algebra.Class.LeftModule r e) => Numeric.Algebra.Class.LeftModule r (a, b, c, d, e) instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Types.Bool instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Natural.Natural instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Integer.Type.Integer instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Integer.Type.Integer instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Types.Int instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Types.Int instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Int.Int8 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Int.Int8 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Int.Int16 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Int.Int16 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Int.Int32 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Int.Int32 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Int.Int64 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Int.Int64 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Types.Word instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Types.Word instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Word.Word8 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Word.Word8 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Word.Word16 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Word.Word16 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Word.Word32 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Word.Word32 instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural GHC.Word.Word64 instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer GHC.Word.Word64 instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.RightModule r () instance Numeric.Algebra.Class.RightModule r m => Numeric.Algebra.Class.RightModule r (e -> m) instance Numeric.Additive.Class.Additive m => Numeric.Algebra.Class.RightModule () m instance (Numeric.Algebra.Class.RightModule r a, Numeric.Algebra.Class.RightModule r b) => Numeric.Algebra.Class.RightModule r (a, b) instance (Numeric.Algebra.Class.RightModule r a, Numeric.Algebra.Class.RightModule r b, Numeric.Algebra.Class.RightModule r c) => Numeric.Algebra.Class.RightModule r (a, b, c) instance (Numeric.Algebra.Class.RightModule r a, Numeric.Algebra.Class.RightModule r b, Numeric.Algebra.Class.RightModule r c, Numeric.Algebra.Class.RightModule r d) => Numeric.Algebra.Class.RightModule r (a, b, c, d) instance (Numeric.Algebra.Class.RightModule r a, Numeric.Algebra.Class.RightModule r b, Numeric.Algebra.Class.RightModule r c, Numeric.Algebra.Class.RightModule r d, Numeric.Algebra.Class.RightModule r e) => Numeric.Algebra.Class.RightModule r (a, b, c, d, e) instance (Numeric.Algebra.Class.LeftModule r m, Numeric.Algebra.Class.RightModule r m) => Numeric.Algebra.Class.Module r m instance Numeric.Algebra.Class.Monoidal GHC.Types.Bool instance Numeric.Algebra.Class.Monoidal GHC.Natural.Natural instance Numeric.Algebra.Class.Monoidal GHC.Integer.Type.Integer instance Numeric.Algebra.Class.Monoidal GHC.Types.Int instance Numeric.Algebra.Class.Monoidal GHC.Int.Int8 instance Numeric.Algebra.Class.Monoidal GHC.Int.Int16 instance Numeric.Algebra.Class.Monoidal GHC.Int.Int32 instance Numeric.Algebra.Class.Monoidal GHC.Int.Int64 instance Numeric.Algebra.Class.Monoidal GHC.Types.Word instance Numeric.Algebra.Class.Monoidal GHC.Word.Word8 instance Numeric.Algebra.Class.Monoidal GHC.Word.Word16 instance Numeric.Algebra.Class.Monoidal GHC.Word.Word32 instance Numeric.Algebra.Class.Monoidal GHC.Word.Word64 instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (e -> r) instance Numeric.Algebra.Class.Monoidal () instance (Numeric.Algebra.Class.Monoidal a, Numeric.Algebra.Class.Monoidal b) => Numeric.Algebra.Class.Monoidal (a, b) instance (Numeric.Algebra.Class.Monoidal a, Numeric.Algebra.Class.Monoidal b, Numeric.Algebra.Class.Monoidal c) => Numeric.Algebra.Class.Monoidal (a, b, c) instance (Numeric.Algebra.Class.Monoidal a, Numeric.Algebra.Class.Monoidal b, Numeric.Algebra.Class.Monoidal c, Numeric.Algebra.Class.Monoidal d) => Numeric.Algebra.Class.Monoidal (a, b, c, d) instance (Numeric.Algebra.Class.Monoidal a, Numeric.Algebra.Class.Monoidal b, Numeric.Algebra.Class.Monoidal c, Numeric.Algebra.Class.Monoidal d, Numeric.Algebra.Class.Monoidal e) => Numeric.Algebra.Class.Monoidal (a, b, c, d, e) module Numeric.Additive.Group class (LeftModule Integer r, RightModule Integer r, Monoidal r) => Group r where times y0 x0 = case compare y0 0 of { LT -> f (negate x0) (negate y0) EQ -> zero GT -> f x0 y0 } where f x y | even y = f (x + x) (y `quot` 2) | y == 1 = x | otherwise = g (x + x) ((y - 1) `quot` 2) x g x y z | even y = g (x + x) (y `quot` 2) z | y == 1 = x + z | otherwise = g (x + x) ((y - 1) `quot` 2) (x + z) negate a = zero - a a - b = a + negate b subtract a b = negate a + b (-) :: Group r => r -> r -> r negate :: Group r => r -> r subtract :: Group r => r -> r -> r times :: (Group r, Integral n) => n -> r -> r instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (e -> r) instance Numeric.Additive.Group.Group GHC.Integer.Type.Integer instance Numeric.Additive.Group.Group GHC.Types.Int instance Numeric.Additive.Group.Group GHC.Int.Int8 instance Numeric.Additive.Group.Group GHC.Int.Int16 instance Numeric.Additive.Group.Group GHC.Int.Int32 instance Numeric.Additive.Group.Group GHC.Int.Int64 instance Numeric.Additive.Group.Group GHC.Types.Word instance Numeric.Additive.Group.Group GHC.Word.Word8 instance Numeric.Additive.Group.Group GHC.Word.Word16 instance Numeric.Additive.Group.Group GHC.Word.Word32 instance Numeric.Additive.Group.Group GHC.Word.Word64 instance Numeric.Additive.Group.Group () instance (Numeric.Additive.Group.Group a, Numeric.Additive.Group.Group b) => Numeric.Additive.Group.Group (a, b) instance (Numeric.Additive.Group.Group a, Numeric.Additive.Group.Group b, Numeric.Additive.Group.Group c) => Numeric.Additive.Group.Group (a, b, c) instance (Numeric.Additive.Group.Group a, Numeric.Additive.Group.Group b, Numeric.Additive.Group.Group c, Numeric.Additive.Group.Group d) => Numeric.Additive.Group.Group (a, b, c, d) instance (Numeric.Additive.Group.Group a, Numeric.Additive.Group.Group b, Numeric.Additive.Group.Group c, Numeric.Additive.Group.Group d, Numeric.Additive.Group.Group e) => Numeric.Additive.Group.Group (a, b, c, d, e) module Numeric.Algebra.Factorable -- | `factorWith f c` returns a non-empty list containing `f a b` for all -- `a, b` such that `a * b = c`. -- -- Results of factorWith f 0 are undefined and may result in either an -- error or an infinite list. class Multiplicative m => Factorable m factorWith :: Factorable m => (m -> m -> r) -> m -> NonEmpty r instance Numeric.Algebra.Factorable.Factorable GHC.Types.Bool instance Numeric.Algebra.Factorable.Factorable () instance (Numeric.Algebra.Factorable.Factorable a, Numeric.Algebra.Factorable.Factorable b) => Numeric.Algebra.Factorable.Factorable (a, b) instance (Numeric.Algebra.Factorable.Factorable a, Numeric.Algebra.Factorable.Factorable b, Numeric.Algebra.Factorable.Factorable c) => Numeric.Algebra.Factorable.Factorable (a, b, c) instance (Numeric.Algebra.Factorable.Factorable a, Numeric.Algebra.Factorable.Factorable b, Numeric.Algebra.Factorable.Factorable c, Numeric.Algebra.Factorable.Factorable d) => Numeric.Algebra.Factorable.Factorable (a, b, c, d) instance (Numeric.Algebra.Factorable.Factorable a, Numeric.Algebra.Factorable.Factorable b, Numeric.Algebra.Factorable.Factorable c, Numeric.Algebra.Factorable.Factorable d, Numeric.Algebra.Factorable.Factorable e) => Numeric.Algebra.Factorable.Factorable (a, b, c, d, e) module Numeric.Algebra.Unital class Multiplicative r => Unital r where pow _ 0 = one pow x0 y0 = f x0 y0 where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) productWith f = foldl' (\ b a -> b * f a) one one :: Unital r => r pow :: Unital r => r -> Natural -> r productWith :: (Unital r, Foldable f) => (a -> r) -> f a -> r product :: (Foldable f, Unital r) => f r -> r -- | An associative unital algebra over a semiring, built using a free -- module class Algebra r a => UnitalAlgebra r a unit :: UnitalAlgebra r a => r -> a -> r class Coalgebra r c => CounitalCoalgebra r c counit :: CounitalCoalgebra r c => (c -> r) -> r -- | A bialgebra is both a unital algebra and counital coalgebra where the -- mult and unit are compatible in some sense with the -- comult and counit. That is to say that mult and -- unit are a coalgebra homomorphisms or (equivalently) that -- comult and counit are an algebra homomorphisms. class (UnitalAlgebra r a, CounitalCoalgebra r a) => Bialgebra r a instance Numeric.Algebra.Unital.Unital GHC.Types.Bool instance Numeric.Algebra.Unital.Unital GHC.Integer.Type.Integer instance Numeric.Algebra.Unital.Unital GHC.Types.Int instance Numeric.Algebra.Unital.Unital GHC.Int.Int8 instance Numeric.Algebra.Unital.Unital GHC.Int.Int16 instance Numeric.Algebra.Unital.Unital GHC.Int.Int32 instance Numeric.Algebra.Unital.Unital GHC.Int.Int64 instance Numeric.Algebra.Unital.Unital GHC.Natural.Natural instance Numeric.Algebra.Unital.Unital GHC.Types.Word instance Numeric.Algebra.Unital.Unital GHC.Word.Word8 instance Numeric.Algebra.Unital.Unital GHC.Word.Word16 instance Numeric.Algebra.Unital.Unital GHC.Word.Word32 instance Numeric.Algebra.Unital.Unital GHC.Word.Word64 instance Numeric.Algebra.Unital.Unital () instance (Numeric.Algebra.Unital.Unital a, Numeric.Algebra.Unital.Unital b) => Numeric.Algebra.Unital.Unital (a, b) instance (Numeric.Algebra.Unital.Unital a, Numeric.Algebra.Unital.Unital b, Numeric.Algebra.Unital.Unital c) => Numeric.Algebra.Unital.Unital (a, b, c) instance (Numeric.Algebra.Unital.Unital a, Numeric.Algebra.Unital.Unital b, Numeric.Algebra.Unital.Unital c, Numeric.Algebra.Unital.Unital d) => Numeric.Algebra.Unital.Unital (a, b, c, d) instance (Numeric.Algebra.Unital.Unital a, Numeric.Algebra.Unital.Unital b, Numeric.Algebra.Unital.Unital c, Numeric.Algebra.Unital.Unital d, Numeric.Algebra.Unital.Unital e) => Numeric.Algebra.Unital.Unital (a, b, c, d, e) instance (Numeric.Algebra.Unital.Unital r, Numeric.Algebra.Unital.UnitalAlgebra r a) => Numeric.Algebra.Unital.Unital (a -> r) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Unital.UnitalAlgebra r () instance (Numeric.Algebra.Unital.UnitalAlgebra r a, Numeric.Algebra.Unital.UnitalAlgebra r b) => Numeric.Algebra.Unital.UnitalAlgebra r (a, b) instance (Numeric.Algebra.Unital.UnitalAlgebra r a, Numeric.Algebra.Unital.UnitalAlgebra r b, Numeric.Algebra.Unital.UnitalAlgebra r c) => Numeric.Algebra.Unital.UnitalAlgebra r (a, b, c) instance (Numeric.Algebra.Unital.UnitalAlgebra r a, Numeric.Algebra.Unital.UnitalAlgebra r b, Numeric.Algebra.Unital.UnitalAlgebra r c, Numeric.Algebra.Unital.UnitalAlgebra r d) => Numeric.Algebra.Unital.UnitalAlgebra r (a, b, c, d) instance (Numeric.Algebra.Unital.UnitalAlgebra r a, Numeric.Algebra.Unital.UnitalAlgebra r b, Numeric.Algebra.Unital.UnitalAlgebra r c, Numeric.Algebra.Unital.UnitalAlgebra r d, Numeric.Algebra.Unital.UnitalAlgebra r e) => Numeric.Algebra.Unital.UnitalAlgebra r (a, b, c, d, e) instance (Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Unital.UnitalAlgebra r [a] instance (Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Unital.UnitalAlgebra r (Data.Sequence.Seq a) instance (Numeric.Algebra.Unital.Unital r, Numeric.Algebra.Unital.UnitalAlgebra r m) => Numeric.Algebra.Unital.CounitalCoalgebra r (m -> r) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Unital.CounitalCoalgebra r () instance (Numeric.Algebra.Unital.CounitalCoalgebra r a, Numeric.Algebra.Unital.CounitalCoalgebra r b) => Numeric.Algebra.Unital.CounitalCoalgebra r (a, b) instance (Numeric.Algebra.Unital.CounitalCoalgebra r a, Numeric.Algebra.Unital.CounitalCoalgebra r b, Numeric.Algebra.Unital.CounitalCoalgebra r c) => Numeric.Algebra.Unital.CounitalCoalgebra r (a, b, c) instance (Numeric.Algebra.Unital.CounitalCoalgebra r a, Numeric.Algebra.Unital.CounitalCoalgebra r b, Numeric.Algebra.Unital.CounitalCoalgebra r c, Numeric.Algebra.Unital.CounitalCoalgebra r d) => Numeric.Algebra.Unital.CounitalCoalgebra r (a, b, c, d) instance (Numeric.Algebra.Unital.CounitalCoalgebra r a, Numeric.Algebra.Unital.CounitalCoalgebra r b, Numeric.Algebra.Unital.CounitalCoalgebra r c, Numeric.Algebra.Unital.CounitalCoalgebra r d, Numeric.Algebra.Unital.CounitalCoalgebra r e) => Numeric.Algebra.Unital.CounitalCoalgebra r (a, b, c, d, e) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Unital.CounitalCoalgebra r [a] instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Unital.CounitalCoalgebra r (Data.Sequence.Seq a) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Unital.Bialgebra r () instance (Numeric.Algebra.Unital.Bialgebra r a, Numeric.Algebra.Unital.Bialgebra r b) => Numeric.Algebra.Unital.Bialgebra r (a, b) instance (Numeric.Algebra.Unital.Bialgebra r a, Numeric.Algebra.Unital.Bialgebra r b, Numeric.Algebra.Unital.Bialgebra r c) => Numeric.Algebra.Unital.Bialgebra r (a, b, c) instance (Numeric.Algebra.Unital.Bialgebra r a, Numeric.Algebra.Unital.Bialgebra r b, Numeric.Algebra.Unital.Bialgebra r c, Numeric.Algebra.Unital.Bialgebra r d) => Numeric.Algebra.Unital.Bialgebra r (a, b, c, d) instance (Numeric.Algebra.Unital.Bialgebra r a, Numeric.Algebra.Unital.Bialgebra r b, Numeric.Algebra.Unital.Bialgebra r c, Numeric.Algebra.Unital.Bialgebra r d, Numeric.Algebra.Unital.Bialgebra r e) => Numeric.Algebra.Unital.Bialgebra r (a, b, c, d, e) instance (Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Unital.Bialgebra r [a] instance (Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Unital.Bialgebra r (Data.Sequence.Seq a) module Numeric.Algebra.Division class Unital r => Division r where recip a = one / a a / b = a * recip b a \\ b = recip a * b x0 ^ y0 = case compare y0 0 of { LT -> f (recip x0) (negate y0) EQ -> one GT -> f x0 y0 } where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) recip :: Division r => r -> r (/) :: Division r => r -> r -> r (\\) :: Division r => r -> r -> r (^) :: (Division r, Integral n) => r -> n -> r class UnitalAlgebra r a => DivisionAlgebra r a recipriocal :: DivisionAlgebra r a => (a -> r) -> a -> r instance Numeric.Algebra.Division.Division () instance (Numeric.Algebra.Division.Division a, Numeric.Algebra.Division.Division b) => Numeric.Algebra.Division.Division (a, b) instance (Numeric.Algebra.Division.Division a, Numeric.Algebra.Division.Division b, Numeric.Algebra.Division.Division c) => Numeric.Algebra.Division.Division (a, b, c) instance (Numeric.Algebra.Division.Division a, Numeric.Algebra.Division.Division b, Numeric.Algebra.Division.Division c, Numeric.Algebra.Division.Division d) => Numeric.Algebra.Division.Division (a, b, c, d) instance (Numeric.Algebra.Division.Division a, Numeric.Algebra.Division.Division b, Numeric.Algebra.Division.Division c, Numeric.Algebra.Division.Division d, Numeric.Algebra.Division.Division e) => Numeric.Algebra.Division.Division (a, b, c, d, e) instance (Numeric.Algebra.Unital.Unital r, Numeric.Algebra.Division.DivisionAlgebra r a) => Numeric.Algebra.Division.Division (a -> r) module Numeric.Algebra.Hopf -- | A HopfAlgebra algebra on a semiring, where the module is free. -- -- When antipode . antipode = id and antipode is an -- antihomomorphism then we are an InvolutiveBialgebra with inv = -- antipode as well class Bialgebra r h => HopfAlgebra r h antipode :: HopfAlgebra r h => (h -> r) -> h -> r instance (Numeric.Algebra.Hopf.HopfAlgebra r a, Numeric.Algebra.Hopf.HopfAlgebra r b) => Numeric.Algebra.Hopf.HopfAlgebra r (a, b) instance (Numeric.Algebra.Hopf.HopfAlgebra r a, Numeric.Algebra.Hopf.HopfAlgebra r b, Numeric.Algebra.Hopf.HopfAlgebra r c) => Numeric.Algebra.Hopf.HopfAlgebra r (a, b, c) instance (Numeric.Algebra.Hopf.HopfAlgebra r a, Numeric.Algebra.Hopf.HopfAlgebra r b, Numeric.Algebra.Hopf.HopfAlgebra r c, Numeric.Algebra.Hopf.HopfAlgebra r d) => Numeric.Algebra.Hopf.HopfAlgebra r (a, b, c, d) instance (Numeric.Algebra.Hopf.HopfAlgebra r a, Numeric.Algebra.Hopf.HopfAlgebra r b, Numeric.Algebra.Hopf.HopfAlgebra r c, Numeric.Algebra.Hopf.HopfAlgebra r d, Numeric.Algebra.Hopf.HopfAlgebra r e) => Numeric.Algebra.Hopf.HopfAlgebra r (a, b, c, d, e) module Numeric.Algebra.Idempotent -- | An multiplicative semigroup with idempotent multiplication. -- --
-- a * a = a --class Multiplicative r => Band r pow1pBand :: r -> Natural -> r powBand :: Unital r => r -> Natural -> r class Algebra r a => IdempotentAlgebra r a class Coalgebra r c => IdempotentCoalgebra r c class (Bialgebra r h, IdempotentAlgebra r h, IdempotentCoalgebra r h) => IdempotentBialgebra r h instance Numeric.Algebra.Idempotent.Band () instance Numeric.Algebra.Idempotent.Band GHC.Types.Bool instance (Numeric.Algebra.Idempotent.Band a, Numeric.Algebra.Idempotent.Band b) => Numeric.Algebra.Idempotent.Band (a, b) instance (Numeric.Algebra.Idempotent.Band a, Numeric.Algebra.Idempotent.Band b, Numeric.Algebra.Idempotent.Band c) => Numeric.Algebra.Idempotent.Band (a, b, c) instance (Numeric.Algebra.Idempotent.Band a, Numeric.Algebra.Idempotent.Band b, Numeric.Algebra.Idempotent.Band c, Numeric.Algebra.Idempotent.Band d) => Numeric.Algebra.Idempotent.Band (a, b, c, d) instance (Numeric.Algebra.Idempotent.Band a, Numeric.Algebra.Idempotent.Band b, Numeric.Algebra.Idempotent.Band c, Numeric.Algebra.Idempotent.Band d, Numeric.Algebra.Idempotent.Band e) => Numeric.Algebra.Idempotent.Band (a, b, c, d, e) instance (Numeric.Algebra.Class.Semiring r, Numeric.Algebra.Idempotent.Band r, GHC.Classes.Ord a) => Numeric.Algebra.Idempotent.IdempotentAlgebra r (Data.Set.Base.Set a) instance (Numeric.Algebra.Class.Semiring r, Numeric.Algebra.Idempotent.Band r) => Numeric.Algebra.Idempotent.IdempotentAlgebra r Data.IntSet.Base.IntSet instance (Numeric.Algebra.Class.Semiring r, Numeric.Algebra.Idempotent.Band r) => Numeric.Algebra.Idempotent.IdempotentAlgebra r () instance (Numeric.Algebra.Idempotent.IdempotentAlgebra r a, Numeric.Algebra.Idempotent.IdempotentAlgebra r b) => Numeric.Algebra.Idempotent.IdempotentAlgebra r (a, b) instance (Numeric.Algebra.Idempotent.IdempotentAlgebra r a, Numeric.Algebra.Idempotent.IdempotentAlgebra r b, Numeric.Algebra.Idempotent.IdempotentAlgebra r c) => Numeric.Algebra.Idempotent.IdempotentAlgebra r (a, b, c) instance (Numeric.Algebra.Idempotent.IdempotentAlgebra r a, Numeric.Algebra.Idempotent.IdempotentAlgebra r b, Numeric.Algebra.Idempotent.IdempotentAlgebra r c, Numeric.Algebra.Idempotent.IdempotentAlgebra r d) => Numeric.Algebra.Idempotent.IdempotentAlgebra r (a, b, c, d) instance (Numeric.Algebra.Idempotent.IdempotentAlgebra r a, Numeric.Algebra.Idempotent.IdempotentAlgebra r b, Numeric.Algebra.Idempotent.IdempotentAlgebra r c, Numeric.Algebra.Idempotent.IdempotentAlgebra r d, Numeric.Algebra.Idempotent.IdempotentAlgebra r e) => Numeric.Algebra.Idempotent.IdempotentAlgebra r (a, b, c, d, e) instance (Numeric.Algebra.Class.Semiring r, Numeric.Algebra.Idempotent.Band r, GHC.Classes.Ord c) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r (Data.Set.Base.Set c) instance (Numeric.Algebra.Class.Semiring r, Numeric.Algebra.Idempotent.Band r) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r Data.IntSet.Base.IntSet instance (Numeric.Algebra.Class.Semiring r, Numeric.Algebra.Idempotent.Band r) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r () instance (Numeric.Algebra.Idempotent.IdempotentCoalgebra r a, Numeric.Algebra.Idempotent.IdempotentCoalgebra r b) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r (a, b) instance (Numeric.Algebra.Idempotent.IdempotentCoalgebra r a, Numeric.Algebra.Idempotent.IdempotentCoalgebra r b, Numeric.Algebra.Idempotent.IdempotentCoalgebra r c) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r (a, b, c) instance (Numeric.Algebra.Idempotent.IdempotentCoalgebra r a, Numeric.Algebra.Idempotent.IdempotentCoalgebra r b, Numeric.Algebra.Idempotent.IdempotentCoalgebra r c, Numeric.Algebra.Idempotent.IdempotentCoalgebra r d) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r (a, b, c, d) instance (Numeric.Algebra.Idempotent.IdempotentCoalgebra r a, Numeric.Algebra.Idempotent.IdempotentCoalgebra r b, Numeric.Algebra.Idempotent.IdempotentCoalgebra r c, Numeric.Algebra.Idempotent.IdempotentCoalgebra r d, Numeric.Algebra.Idempotent.IdempotentCoalgebra r e) => Numeric.Algebra.Idempotent.IdempotentCoalgebra r (a, b, c, d, e) instance (Numeric.Algebra.Unital.Bialgebra r h, Numeric.Algebra.Idempotent.IdempotentAlgebra r h, Numeric.Algebra.Idempotent.IdempotentCoalgebra r h) => Numeric.Algebra.Idempotent.IdempotentBialgebra r h module Numeric.Band.Class -- | An multiplicative semigroup with idempotent multiplication. -- --
-- a * a = a --class Multiplicative r => Band r pow1pBand :: r -> Natural -> r powBand :: Unital r => r -> Natural -> r module Numeric.Decidable.Associates class Unital r => DecidableAssociates r -- | b is an associate of a if there exists a unit u such that b = a*u -- -- This relationship is symmetric because if u is a unit, u^-1 exists and -- is a unit, so -- --
-- b*u^-1 = a*u*u^-1 = a --isAssociate :: DecidableAssociates r => r -> r -> Bool isAssociateIntegral :: (Eq n, Num n) => n -> n -> Bool isAssociateWhole :: Eq n => n -> n -> Bool instance Numeric.Decidable.Associates.DecidableAssociates GHC.Types.Bool instance Numeric.Decidable.Associates.DecidableAssociates GHC.Integer.Type.Integer instance Numeric.Decidable.Associates.DecidableAssociates GHC.Types.Int instance Numeric.Decidable.Associates.DecidableAssociates GHC.Int.Int8 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Int.Int16 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Int.Int32 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Int.Int64 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Natural.Natural instance Numeric.Decidable.Associates.DecidableAssociates GHC.Types.Word instance Numeric.Decidable.Associates.DecidableAssociates GHC.Word.Word8 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Word.Word16 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Word.Word32 instance Numeric.Decidable.Associates.DecidableAssociates GHC.Word.Word64 instance Numeric.Decidable.Associates.DecidableAssociates () instance (Numeric.Decidable.Associates.DecidableAssociates a, Numeric.Decidable.Associates.DecidableAssociates b) => Numeric.Decidable.Associates.DecidableAssociates (a, b) instance (Numeric.Decidable.Associates.DecidableAssociates a, Numeric.Decidable.Associates.DecidableAssociates b, Numeric.Decidable.Associates.DecidableAssociates c) => Numeric.Decidable.Associates.DecidableAssociates (a, b, c) instance (Numeric.Decidable.Associates.DecidableAssociates a, Numeric.Decidable.Associates.DecidableAssociates b, Numeric.Decidable.Associates.DecidableAssociates c, Numeric.Decidable.Associates.DecidableAssociates d) => Numeric.Decidable.Associates.DecidableAssociates (a, b, c, d) instance (Numeric.Decidable.Associates.DecidableAssociates a, Numeric.Decidable.Associates.DecidableAssociates b, Numeric.Decidable.Associates.DecidableAssociates c, Numeric.Decidable.Associates.DecidableAssociates d, Numeric.Decidable.Associates.DecidableAssociates e) => Numeric.Decidable.Associates.DecidableAssociates (a, b, c, d, e) module Numeric.Band.Rectangular -- | a rectangular band is a nowhere commutative semigroup. That is to say, -- if ab = ba then a = b. From this it follows classically that aa = a -- and that such a band is isomorphic to the following structure data Rect i j Rect :: i -> j -> Rect i j instance (GHC.Read.Read j, GHC.Read.Read i) => GHC.Read.Read (Numeric.Band.Rectangular.Rect i j) instance (GHC.Show.Show j, GHC.Show.Show i) => GHC.Show.Show (Numeric.Band.Rectangular.Rect i j) instance (GHC.Classes.Ord j, GHC.Classes.Ord i) => GHC.Classes.Ord (Numeric.Band.Rectangular.Rect i j) instance (GHC.Classes.Eq j, GHC.Classes.Eq i) => GHC.Classes.Eq (Numeric.Band.Rectangular.Rect i j) instance Data.Semigroupoid.Semigroupoid Numeric.Band.Rectangular.Rect instance Numeric.Algebra.Class.Multiplicative (Numeric.Band.Rectangular.Rect i j) instance Numeric.Algebra.Idempotent.Band (Numeric.Band.Rectangular.Rect i j) module Numeric.Decidable.Units class Unital r => DecidableUnits r where isUnit = isJust . recipUnit x0 ^? y0 = case compare y0 0 of { LT -> fmap (`f` negate y0) (recipUnit x0) EQ -> Just one GT -> Just (f x0 y0) } where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) recipUnit :: DecidableUnits r => r -> Maybe r isUnit :: DecidableUnits r => r -> Bool (^?) :: (DecidableUnits r, Integral n) => r -> n -> Maybe r recipUnitIntegral :: Integral r => r -> Maybe r recipUnitWhole :: Integral r => r -> Maybe r instance Numeric.Decidable.Units.DecidableUnits GHC.Types.Bool instance Numeric.Decidable.Units.DecidableUnits GHC.Integer.Type.Integer instance Numeric.Decidable.Units.DecidableUnits GHC.Types.Int instance Numeric.Decidable.Units.DecidableUnits GHC.Int.Int8 instance Numeric.Decidable.Units.DecidableUnits GHC.Int.Int16 instance Numeric.Decidable.Units.DecidableUnits GHC.Int.Int32 instance Numeric.Decidable.Units.DecidableUnits GHC.Int.Int64 instance Numeric.Decidable.Units.DecidableUnits GHC.Natural.Natural instance Numeric.Decidable.Units.DecidableUnits GHC.Types.Word instance Numeric.Decidable.Units.DecidableUnits GHC.Word.Word8 instance Numeric.Decidable.Units.DecidableUnits GHC.Word.Word16 instance Numeric.Decidable.Units.DecidableUnits GHC.Word.Word32 instance Numeric.Decidable.Units.DecidableUnits GHC.Word.Word64 instance Numeric.Decidable.Units.DecidableUnits () instance (Numeric.Decidable.Units.DecidableUnits a, Numeric.Decidable.Units.DecidableUnits b) => Numeric.Decidable.Units.DecidableUnits (a, b) instance (Numeric.Decidable.Units.DecidableUnits a, Numeric.Decidable.Units.DecidableUnits b, Numeric.Decidable.Units.DecidableUnits c) => Numeric.Decidable.Units.DecidableUnits (a, b, c) instance (Numeric.Decidable.Units.DecidableUnits a, Numeric.Decidable.Units.DecidableUnits b, Numeric.Decidable.Units.DecidableUnits c, Numeric.Decidable.Units.DecidableUnits d) => Numeric.Decidable.Units.DecidableUnits (a, b, c, d) instance (Numeric.Decidable.Units.DecidableUnits a, Numeric.Decidable.Units.DecidableUnits b, Numeric.Decidable.Units.DecidableUnits c, Numeric.Decidable.Units.DecidableUnits d, Numeric.Decidable.Units.DecidableUnits e) => Numeric.Decidable.Units.DecidableUnits (a, b, c, d, e) module Numeric.Decidable.Zero class Monoidal r => DecidableZero r isZero :: DecidableZero r => r -> Bool instance Numeric.Decidable.Zero.DecidableZero GHC.Types.Bool instance Numeric.Decidable.Zero.DecidableZero GHC.Integer.Type.Integer instance Numeric.Decidable.Zero.DecidableZero GHC.Types.Int instance Numeric.Decidable.Zero.DecidableZero GHC.Int.Int8 instance Numeric.Decidable.Zero.DecidableZero GHC.Int.Int16 instance Numeric.Decidable.Zero.DecidableZero GHC.Int.Int32 instance Numeric.Decidable.Zero.DecidableZero GHC.Int.Int64 instance Numeric.Decidable.Zero.DecidableZero GHC.Natural.Natural instance Numeric.Decidable.Zero.DecidableZero GHC.Types.Word instance Numeric.Decidable.Zero.DecidableZero GHC.Word.Word8 instance Numeric.Decidable.Zero.DecidableZero GHC.Word.Word16 instance Numeric.Decidable.Zero.DecidableZero GHC.Word.Word32 instance Numeric.Decidable.Zero.DecidableZero GHC.Word.Word64 instance Numeric.Decidable.Zero.DecidableZero () instance (Numeric.Decidable.Zero.DecidableZero a, Numeric.Decidable.Zero.DecidableZero b) => Numeric.Decidable.Zero.DecidableZero (a, b) instance (Numeric.Decidable.Zero.DecidableZero a, Numeric.Decidable.Zero.DecidableZero b, Numeric.Decidable.Zero.DecidableZero c) => Numeric.Decidable.Zero.DecidableZero (a, b, c) instance (Numeric.Decidable.Zero.DecidableZero a, Numeric.Decidable.Zero.DecidableZero b, Numeric.Decidable.Zero.DecidableZero c, Numeric.Decidable.Zero.DecidableZero d) => Numeric.Decidable.Zero.DecidableZero (a, b, c, d) instance (Numeric.Decidable.Zero.DecidableZero a, Numeric.Decidable.Zero.DecidableZero b, Numeric.Decidable.Zero.DecidableZero c, Numeric.Decidable.Zero.DecidableZero d, Numeric.Decidable.Zero.DecidableZero e) => Numeric.Decidable.Zero.DecidableZero (a, b, c, d, e) module Numeric.Module.Class class (Semiring r, Additive m) => LeftModule r m (.*) :: LeftModule r m => r -> m -> m class (Semiring r, Additive m) => RightModule r m (*.) :: RightModule r m => m -> r -> m class (LeftModule r m, RightModule r m) => Module r m module Numeric.Rig.Class -- | A Ring without (n)egation class (Semiring r, Unital r, Monoidal r) => Rig r where fromNatural n = sinnum n one fromNatural :: Rig r => Natural -> r instance Numeric.Rig.Class.Rig GHC.Integer.Type.Integer instance Numeric.Rig.Class.Rig GHC.Natural.Natural instance Numeric.Rig.Class.Rig GHC.Types.Bool instance Numeric.Rig.Class.Rig GHC.Types.Int instance Numeric.Rig.Class.Rig GHC.Int.Int8 instance Numeric.Rig.Class.Rig GHC.Int.Int16 instance Numeric.Rig.Class.Rig GHC.Int.Int32 instance Numeric.Rig.Class.Rig GHC.Int.Int64 instance Numeric.Rig.Class.Rig GHC.Types.Word instance Numeric.Rig.Class.Rig GHC.Word.Word8 instance Numeric.Rig.Class.Rig GHC.Word.Word16 instance Numeric.Rig.Class.Rig GHC.Word.Word32 instance Numeric.Rig.Class.Rig GHC.Word.Word64 instance Numeric.Rig.Class.Rig () instance (Numeric.Rig.Class.Rig a, Numeric.Rig.Class.Rig b) => Numeric.Rig.Class.Rig (a, b) instance (Numeric.Rig.Class.Rig a, Numeric.Rig.Class.Rig b, Numeric.Rig.Class.Rig c) => Numeric.Rig.Class.Rig (a, b, c) instance (Numeric.Rig.Class.Rig a, Numeric.Rig.Class.Rig b, Numeric.Rig.Class.Rig c, Numeric.Rig.Class.Rig d) => Numeric.Rig.Class.Rig (a, b, c, d) instance (Numeric.Rig.Class.Rig a, Numeric.Rig.Class.Rig b, Numeric.Rig.Class.Rig c, Numeric.Rig.Class.Rig d, Numeric.Rig.Class.Rig e) => Numeric.Rig.Class.Rig (a, b, c, d, e) module Numeric.Rig.Characteristic class Rig r => Characteristic r char :: Characteristic r => proxy r -> Natural charInt :: (Integral s, Bounded s) => proxy s -> Natural charWord :: (Integral s, Bounded s) => proxy s -> Natural instance Numeric.Rig.Characteristic.Characteristic GHC.Types.Bool instance Numeric.Rig.Characteristic.Characteristic GHC.Integer.Type.Integer instance Numeric.Rig.Characteristic.Characteristic GHC.Natural.Natural instance Numeric.Rig.Characteristic.Characteristic GHC.Types.Int instance Numeric.Rig.Characteristic.Characteristic GHC.Int.Int8 instance Numeric.Rig.Characteristic.Characteristic GHC.Int.Int16 instance Numeric.Rig.Characteristic.Characteristic GHC.Int.Int32 instance Numeric.Rig.Characteristic.Characteristic GHC.Int.Int64 instance Numeric.Rig.Characteristic.Characteristic GHC.Types.Word instance Numeric.Rig.Characteristic.Characteristic GHC.Word.Word8 instance Numeric.Rig.Characteristic.Characteristic GHC.Word.Word16 instance Numeric.Rig.Characteristic.Characteristic GHC.Word.Word32 instance Numeric.Rig.Characteristic.Characteristic GHC.Word.Word64 instance Numeric.Rig.Characteristic.Characteristic () instance (Numeric.Rig.Characteristic.Characteristic a, Numeric.Rig.Characteristic.Characteristic b) => Numeric.Rig.Characteristic.Characteristic (a, b) instance (Numeric.Rig.Characteristic.Characteristic a, Numeric.Rig.Characteristic.Characteristic b, Numeric.Rig.Characteristic.Characteristic c) => Numeric.Rig.Characteristic.Characteristic (a, b, c) instance (Numeric.Rig.Characteristic.Characteristic a, Numeric.Rig.Characteristic.Characteristic b, Numeric.Rig.Characteristic.Characteristic c, Numeric.Rig.Characteristic.Characteristic d) => Numeric.Rig.Characteristic.Characteristic (a, b, c, d) instance (Numeric.Rig.Characteristic.Characteristic a, Numeric.Rig.Characteristic.Characteristic b, Numeric.Rig.Characteristic.Characteristic c, Numeric.Rig.Characteristic.Characteristic d, Numeric.Rig.Characteristic.Characteristic e) => Numeric.Rig.Characteristic.Characteristic (a, b, c, d, e) module Numeric.Rng.Class -- | A Ring without an identity. class (Group r, Semiring r) => Rng r instance (Numeric.Additive.Group.Group r, Numeric.Algebra.Class.Semiring r) => Numeric.Rng.Class.Rng r module Numeric.Ring.Class class (Rig r, Rng r) => Ring r where fromInteger n = times n one fromInteger :: Ring r => Integer -> r fromIntegral :: (Integral n, Ring r) => n -> r instance Numeric.Ring.Class.Ring GHC.Integer.Type.Integer instance Numeric.Ring.Class.Ring GHC.Types.Int instance Numeric.Ring.Class.Ring GHC.Int.Int8 instance Numeric.Ring.Class.Ring GHC.Int.Int16 instance Numeric.Ring.Class.Ring GHC.Int.Int32 instance Numeric.Ring.Class.Ring GHC.Int.Int64 instance Numeric.Ring.Class.Ring GHC.Types.Word instance Numeric.Ring.Class.Ring GHC.Word.Word8 instance Numeric.Ring.Class.Ring GHC.Word.Word16 instance Numeric.Ring.Class.Ring GHC.Word.Word32 instance Numeric.Ring.Class.Ring GHC.Word.Word64 instance Numeric.Ring.Class.Ring () instance (Numeric.Ring.Class.Ring a, Numeric.Ring.Class.Ring b) => Numeric.Ring.Class.Ring (a, b) instance (Numeric.Ring.Class.Ring a, Numeric.Ring.Class.Ring b, Numeric.Ring.Class.Ring c) => Numeric.Ring.Class.Ring (a, b, c) instance (Numeric.Ring.Class.Ring a, Numeric.Ring.Class.Ring b, Numeric.Ring.Class.Ring c, Numeric.Ring.Class.Ring d) => Numeric.Ring.Class.Ring (a, b, c, d) instance (Numeric.Ring.Class.Ring a, Numeric.Ring.Class.Ring b, Numeric.Ring.Class.Ring c, Numeric.Ring.Class.Ring d, Numeric.Ring.Class.Ring e) => Numeric.Ring.Class.Ring (a, b, c, d, e) module Numeric.Ring.Division class (Division r, Ring r) => DivisionRing r instance (Numeric.Algebra.Division.Division r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Division.DivisionRing r module Numeric.Ring.Local class Ring r => LocalRing r module Numeric.Semiring.ZeroProduct -- | A zero-product semiring has no zero divisors -- --
-- a * b = 0 implies a == 0 || b == 0 --class (Monoidal r, Semiring r) => ZeroProductSemiring r instance Numeric.Semiring.ZeroProduct.ZeroProductSemiring GHC.Integer.Type.Integer instance Numeric.Semiring.ZeroProduct.ZeroProductSemiring GHC.Natural.Natural instance Numeric.Semiring.ZeroProduct.ZeroProductSemiring GHC.Types.Bool module Numeric.Algebra.Unital.UnitNormalForm class (DecidableUnits r, DecidableAssociates r) => UnitNormalForm r where splitUnit x | isZero x = (one, zero) | otherwise = (x, one) splitUnit :: UnitNormalForm r => r -> (r, r) splitUnit :: (UnitNormalForm r, Division r, ZeroProductSemiring r, DecidableZero r) => r -> (r, r) normalize :: UnitNormalForm r => r -> r leadingUnit :: UnitNormalForm r => r -> r instance Numeric.Algebra.Unital.UnitNormalForm.UnitNormalForm GHC.Integer.Type.Integer module Numeric.Algebra.Commutative -- | A commutative multiplicative semigroup class Multiplicative r => Commutative r class Algebra r a => CommutativeAlgebra r a class Coalgebra r c => CocommutativeCoalgebra r c class (Bialgebra r h, CommutativeAlgebra r h, CocommutativeCoalgebra r h) => CommutativeBialgebra r h instance Numeric.Algebra.Commutative.Commutative () instance Numeric.Algebra.Commutative.Commutative GHC.Types.Bool instance Numeric.Algebra.Commutative.Commutative GHC.Integer.Type.Integer instance Numeric.Algebra.Commutative.Commutative GHC.Types.Int instance Numeric.Algebra.Commutative.Commutative GHC.Int.Int8 instance Numeric.Algebra.Commutative.Commutative GHC.Int.Int16 instance Numeric.Algebra.Commutative.Commutative GHC.Int.Int32 instance Numeric.Algebra.Commutative.Commutative GHC.Int.Int64 instance Numeric.Algebra.Commutative.Commutative GHC.Natural.Natural instance Numeric.Algebra.Commutative.Commutative GHC.Types.Word instance Numeric.Algebra.Commutative.Commutative GHC.Word.Word8 instance Numeric.Algebra.Commutative.Commutative GHC.Word.Word16 instance Numeric.Algebra.Commutative.Commutative GHC.Word.Word32 instance Numeric.Algebra.Commutative.Commutative GHC.Word.Word64 instance (Numeric.Algebra.Commutative.Commutative a, Numeric.Algebra.Commutative.Commutative b) => Numeric.Algebra.Commutative.Commutative (a, b) instance (Numeric.Algebra.Commutative.Commutative a, Numeric.Algebra.Commutative.Commutative b, Numeric.Algebra.Commutative.Commutative c) => Numeric.Algebra.Commutative.Commutative (a, b, c) instance (Numeric.Algebra.Commutative.Commutative a, Numeric.Algebra.Commutative.Commutative b, Numeric.Algebra.Commutative.Commutative c, Numeric.Algebra.Commutative.Commutative d) => Numeric.Algebra.Commutative.Commutative (a, b, c, d) instance (Numeric.Algebra.Commutative.Commutative a, Numeric.Algebra.Commutative.Commutative b, Numeric.Algebra.Commutative.Commutative c, Numeric.Algebra.Commutative.Commutative d, Numeric.Algebra.Commutative.Commutative e) => Numeric.Algebra.Commutative.Commutative (a, b, c, d, e) instance Numeric.Algebra.Commutative.CommutativeAlgebra r a => Numeric.Algebra.Commutative.Commutative (a -> r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Commutative.CommutativeAlgebra r () instance (Numeric.Algebra.Commutative.CommutativeAlgebra r a, Numeric.Algebra.Commutative.CommutativeAlgebra r b) => Numeric.Algebra.Commutative.CommutativeAlgebra r (a, b) instance (Numeric.Algebra.Commutative.CommutativeAlgebra r a, Numeric.Algebra.Commutative.CommutativeAlgebra r b, Numeric.Algebra.Commutative.CommutativeAlgebra r c) => Numeric.Algebra.Commutative.CommutativeAlgebra r (a, b, c) instance (Numeric.Algebra.Commutative.CommutativeAlgebra r a, Numeric.Algebra.Commutative.CommutativeAlgebra r b, Numeric.Algebra.Commutative.CommutativeAlgebra r c, Numeric.Algebra.Commutative.CommutativeAlgebra r d) => Numeric.Algebra.Commutative.CommutativeAlgebra r (a, b, c, d) instance (Numeric.Algebra.Commutative.CommutativeAlgebra r a, Numeric.Algebra.Commutative.CommutativeAlgebra r b, Numeric.Algebra.Commutative.CommutativeAlgebra r c, Numeric.Algebra.Commutative.CommutativeAlgebra r d, Numeric.Algebra.Commutative.CommutativeAlgebra r e) => Numeric.Algebra.Commutative.CommutativeAlgebra r (a, b, c, d, e) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r, GHC.Classes.Ord a) => Numeric.Algebra.Commutative.CommutativeAlgebra r (Data.Set.Base.Set a) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Commutative.CommutativeAlgebra r Data.IntSet.Base.IntSet instance Numeric.Algebra.Commutative.CommutativeAlgebra r m => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (m -> r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r () instance (Numeric.Algebra.Commutative.CocommutativeCoalgebra r a, Numeric.Algebra.Commutative.CocommutativeCoalgebra r b) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (a, b) instance (Numeric.Algebra.Commutative.CocommutativeCoalgebra r a, Numeric.Algebra.Commutative.CocommutativeCoalgebra r b, Numeric.Algebra.Commutative.CocommutativeCoalgebra r c) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (a, b, c) instance (Numeric.Algebra.Commutative.CocommutativeCoalgebra r a, Numeric.Algebra.Commutative.CocommutativeCoalgebra r b, Numeric.Algebra.Commutative.CocommutativeCoalgebra r c, Numeric.Algebra.Commutative.CocommutativeCoalgebra r d) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (a, b, c, d) instance (Numeric.Algebra.Commutative.CocommutativeCoalgebra r a, Numeric.Algebra.Commutative.CocommutativeCoalgebra r b, Numeric.Algebra.Commutative.CocommutativeCoalgebra r c, Numeric.Algebra.Commutative.CocommutativeCoalgebra r d, Numeric.Algebra.Commutative.CocommutativeCoalgebra r e) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (a, b, c, d, e) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r, GHC.Classes.Ord a) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (Data.Set.Base.Set a) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r Data.IntSet.Base.IntSet instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r, GHC.Classes.Ord a, Numeric.Additive.Class.Abelian b) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (Data.Map.Base.Map a b) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r, Numeric.Additive.Class.Abelian b) => Numeric.Algebra.Commutative.CocommutativeCoalgebra r (Data.IntMap.Base.IntMap b) instance (Numeric.Algebra.Unital.Bialgebra r h, Numeric.Algebra.Commutative.CommutativeAlgebra r h, Numeric.Algebra.Commutative.CocommutativeCoalgebra r h) => Numeric.Algebra.Commutative.CommutativeBialgebra r h module Numeric.Algebra.Involutive -- | An semigroup with involution -- --
-- adjoint a * adjoint b = adjoint (b * a) --class Multiplicative r => InvolutiveMultiplication r adjoint :: InvolutiveMultiplication r => r -> r -- | adjoint (x + y) = adjoint x + adjoint y class (Semiring r, InvolutiveMultiplication r) => InvolutiveSemiring r class (InvolutiveSemiring r, Algebra r a) => InvolutiveAlgebra r a inv :: InvolutiveAlgebra r a => (a -> r) -> a -> r class (InvolutiveSemiring r, Coalgebra r c) => InvolutiveCoalgebra r c coinv :: InvolutiveCoalgebra r c => (c -> r) -> c -> r class (Bialgebra r h, InvolutiveAlgebra r h, InvolutiveCoalgebra r h) => InvolutiveBialgebra r h -- |
-- adjoint = id --class (Commutative r, InvolutiveMultiplication r) => TriviallyInvolutive r class (CommutativeAlgebra r a, TriviallyInvolutive r, InvolutiveAlgebra r a) => TriviallyInvolutiveAlgebra r a class (CocommutativeCoalgebra r a, TriviallyInvolutive r, InvolutiveCoalgebra r a) => TriviallyInvolutiveCoalgebra r a class (InvolutiveBialgebra r h, TriviallyInvolutiveAlgebra r h, TriviallyInvolutiveCoalgebra r h) => TriviallyInvolutiveBialgebra r h instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Types.Int instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Integer.Type.Integer instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Int.Int8 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Int.Int16 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Int.Int32 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Int.Int64 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Types.Bool instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Types.Word instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Natural.Natural instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Word.Word8 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Word.Word16 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Word.Word32 instance Numeric.Algebra.Involutive.InvolutiveMultiplication GHC.Word.Word64 instance Numeric.Algebra.Involutive.InvolutiveMultiplication () instance (Numeric.Algebra.Involutive.InvolutiveMultiplication a, Numeric.Algebra.Involutive.InvolutiveMultiplication b) => Numeric.Algebra.Involutive.InvolutiveMultiplication (a, b) instance (Numeric.Algebra.Involutive.InvolutiveMultiplication a, Numeric.Algebra.Involutive.InvolutiveMultiplication b, Numeric.Algebra.Involutive.InvolutiveMultiplication c) => Numeric.Algebra.Involutive.InvolutiveMultiplication (a, b, c) instance (Numeric.Algebra.Involutive.InvolutiveMultiplication a, Numeric.Algebra.Involutive.InvolutiveMultiplication b, Numeric.Algebra.Involutive.InvolutiveMultiplication c, Numeric.Algebra.Involutive.InvolutiveMultiplication d) => Numeric.Algebra.Involutive.InvolutiveMultiplication (a, b, c, d) instance (Numeric.Algebra.Involutive.InvolutiveMultiplication a, Numeric.Algebra.Involutive.InvolutiveMultiplication b, Numeric.Algebra.Involutive.InvolutiveMultiplication c, Numeric.Algebra.Involutive.InvolutiveMultiplication d, Numeric.Algebra.Involutive.InvolutiveMultiplication e) => Numeric.Algebra.Involutive.InvolutiveMultiplication (a, b, c, d, e) instance Numeric.Algebra.Involutive.InvolutiveAlgebra r h => Numeric.Algebra.Involutive.InvolutiveMultiplication (h -> r) instance Numeric.Algebra.Involutive.InvolutiveSemiring () instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Types.Bool instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Integer.Type.Integer instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Types.Int instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Int.Int8 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Int.Int16 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Int.Int32 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Int.Int64 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Natural.Natural instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Types.Word instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Word.Word8 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Word.Word16 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Word.Word32 instance Numeric.Algebra.Involutive.InvolutiveSemiring GHC.Word.Word64 instance (Numeric.Algebra.Involutive.InvolutiveSemiring a, Numeric.Algebra.Involutive.InvolutiveSemiring b) => Numeric.Algebra.Involutive.InvolutiveSemiring (a, b) instance (Numeric.Algebra.Involutive.InvolutiveSemiring a, Numeric.Algebra.Involutive.InvolutiveSemiring b, Numeric.Algebra.Involutive.InvolutiveSemiring c) => Numeric.Algebra.Involutive.InvolutiveSemiring (a, b, c) instance (Numeric.Algebra.Involutive.InvolutiveSemiring a, Numeric.Algebra.Involutive.InvolutiveSemiring b, Numeric.Algebra.Involutive.InvolutiveSemiring c, Numeric.Algebra.Involutive.InvolutiveSemiring d) => Numeric.Algebra.Involutive.InvolutiveSemiring (a, b, c, d) instance (Numeric.Algebra.Involutive.InvolutiveSemiring a, Numeric.Algebra.Involutive.InvolutiveSemiring b, Numeric.Algebra.Involutive.InvolutiveSemiring c, Numeric.Algebra.Involutive.InvolutiveSemiring d, Numeric.Algebra.Involutive.InvolutiveSemiring e) => Numeric.Algebra.Involutive.InvolutiveSemiring (a, b, c, d, e) instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Types.Bool instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Types.Int instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Integer.Type.Integer instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Int.Int8 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Int.Int16 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Int.Int32 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Int.Int64 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Types.Word instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Natural.Natural instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Word.Word8 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Word.Word16 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Word.Word32 instance Numeric.Algebra.Involutive.TriviallyInvolutive GHC.Word.Word64 instance Numeric.Algebra.Involutive.TriviallyInvolutive () instance (Numeric.Algebra.Involutive.TriviallyInvolutive a, Numeric.Algebra.Involutive.TriviallyInvolutive b) => Numeric.Algebra.Involutive.TriviallyInvolutive (a, b) instance (Numeric.Algebra.Involutive.TriviallyInvolutive a, Numeric.Algebra.Involutive.TriviallyInvolutive b, Numeric.Algebra.Involutive.TriviallyInvolutive c) => Numeric.Algebra.Involutive.TriviallyInvolutive (a, b, c) instance (Numeric.Algebra.Involutive.TriviallyInvolutive a, Numeric.Algebra.Involutive.TriviallyInvolutive b, Numeric.Algebra.Involutive.TriviallyInvolutive c, Numeric.Algebra.Involutive.TriviallyInvolutive d) => Numeric.Algebra.Involutive.TriviallyInvolutive (a, b, c, d) instance (Numeric.Algebra.Involutive.TriviallyInvolutive a, Numeric.Algebra.Involutive.TriviallyInvolutive b, Numeric.Algebra.Involutive.TriviallyInvolutive c, Numeric.Algebra.Involutive.TriviallyInvolutive d, Numeric.Algebra.Involutive.TriviallyInvolutive e) => Numeric.Algebra.Involutive.TriviallyInvolutive (a, b, c, d, e) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r a) => Numeric.Algebra.Involutive.TriviallyInvolutive (a -> r) instance Numeric.Algebra.Involutive.InvolutiveSemiring r => Numeric.Algebra.Involutive.InvolutiveAlgebra r () instance (Numeric.Algebra.Involutive.InvolutiveAlgebra r a, Numeric.Algebra.Involutive.InvolutiveAlgebra r b) => Numeric.Algebra.Involutive.InvolutiveAlgebra r (a, b) instance (Numeric.Algebra.Involutive.InvolutiveAlgebra r a, Numeric.Algebra.Involutive.InvolutiveAlgebra r b, Numeric.Algebra.Involutive.InvolutiveAlgebra r c) => Numeric.Algebra.Involutive.InvolutiveAlgebra r (a, b, c) instance (Numeric.Algebra.Involutive.InvolutiveAlgebra r a, Numeric.Algebra.Involutive.InvolutiveAlgebra r b, Numeric.Algebra.Involutive.InvolutiveAlgebra r c, Numeric.Algebra.Involutive.InvolutiveAlgebra r d) => Numeric.Algebra.Involutive.InvolutiveAlgebra r (a, b, c, d) instance (Numeric.Algebra.Involutive.InvolutiveAlgebra r a, Numeric.Algebra.Involutive.InvolutiveAlgebra r b, Numeric.Algebra.Involutive.InvolutiveAlgebra r c, Numeric.Algebra.Involutive.InvolutiveAlgebra r d, Numeric.Algebra.Involutive.InvolutiveAlgebra r e) => Numeric.Algebra.Involutive.InvolutiveAlgebra r (a, b, c, d, e) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r () instance (Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r b) => Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r (a, b) instance (Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r b, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r c) => Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r (a, b, c) instance (Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r b, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r c, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r d) => Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r (a, b, c, d) instance (Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r b, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r c, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r d, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r e) => Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r (a, b, c, d, e) instance Numeric.Algebra.Involutive.InvolutiveSemiring r => Numeric.Algebra.Involutive.InvolutiveCoalgebra r () instance (Numeric.Algebra.Involutive.InvolutiveCoalgebra r a, Numeric.Algebra.Involutive.InvolutiveCoalgebra r b) => Numeric.Algebra.Involutive.InvolutiveCoalgebra r (a, b) instance (Numeric.Algebra.Involutive.InvolutiveCoalgebra r a, Numeric.Algebra.Involutive.InvolutiveCoalgebra r b, Numeric.Algebra.Involutive.InvolutiveCoalgebra r c) => Numeric.Algebra.Involutive.InvolutiveCoalgebra r (a, b, c) instance (Numeric.Algebra.Involutive.InvolutiveCoalgebra r a, Numeric.Algebra.Involutive.InvolutiveCoalgebra r b, Numeric.Algebra.Involutive.InvolutiveCoalgebra r c, Numeric.Algebra.Involutive.InvolutiveCoalgebra r d) => Numeric.Algebra.Involutive.InvolutiveCoalgebra r (a, b, c, d) instance (Numeric.Algebra.Involutive.InvolutiveCoalgebra r a, Numeric.Algebra.Involutive.InvolutiveCoalgebra r b, Numeric.Algebra.Involutive.InvolutiveCoalgebra r c, Numeric.Algebra.Involutive.InvolutiveCoalgebra r d, Numeric.Algebra.Involutive.InvolutiveCoalgebra r e) => Numeric.Algebra.Involutive.InvolutiveCoalgebra r (a, b, c, d, e) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r () instance (Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r b) => Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r (a, b) instance (Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r b, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r c) => Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r (a, b, c) instance (Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r b, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r c, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r d) => Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r (a, b, c, d) instance (Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r a, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r b, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r c, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r d, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r e) => Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r (a, b, c, d, e) instance (Numeric.Algebra.Unital.Bialgebra r h, Numeric.Algebra.Involutive.InvolutiveAlgebra r h, Numeric.Algebra.Involutive.InvolutiveCoalgebra r h) => Numeric.Algebra.Involutive.InvolutiveBialgebra r h instance (Numeric.Algebra.Involutive.InvolutiveBialgebra r h, Numeric.Algebra.Involutive.TriviallyInvolutiveAlgebra r h, Numeric.Algebra.Involutive.TriviallyInvolutiveCoalgebra r h) => Numeric.Algebra.Involutive.TriviallyInvolutiveBialgebra r h module Numeric.Semiring.Involutive -- | adjoint (x + y) = adjoint x + adjoint y class (Semiring r, InvolutiveMultiplication r) => InvolutiveSemiring r module Numeric.Coalgebra.Categorical newtype Morphism a Morphism :: a -> Morphism a instance Data.Data.Data a => Data.Data.Data (Numeric.Coalgebra.Categorical.Morphism a) instance Numeric.Partial.Group.PartialGroup a => Numeric.Partial.Group.PartialGroup (Numeric.Coalgebra.Categorical.Morphism a) instance Numeric.Partial.Monoid.PartialMonoid a => Numeric.Partial.Monoid.PartialMonoid (Numeric.Coalgebra.Categorical.Morphism a) instance Numeric.Partial.Semigroup.PartialSemigroup a => Numeric.Partial.Semigroup.PartialSemigroup (Numeric.Coalgebra.Categorical.Morphism a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Coalgebra.Categorical.Morphism a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Coalgebra.Categorical.Morphism a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Numeric.Coalgebra.Categorical.Morphism a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Coalgebra.Categorical.Morphism a) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r, Numeric.Partial.Semigroup.PartialSemigroup a) => Numeric.Algebra.Class.Coalgebra r (Numeric.Coalgebra.Categorical.Morphism a) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r, Numeric.Partial.Monoid.PartialMonoid a) => Numeric.Algebra.Unital.CounitalCoalgebra r (Numeric.Coalgebra.Categorical.Morphism a) module Numeric.Domain.Class -- | (Integral) domain is the integral semiring. class (ZeroProductSemiring d, Ring d) => Domain d module Numeric.Domain.Euclidean class (PID d) => Euclidean d where degree a | isZero a = Nothing | otherwise = Just zero divide a b = let q = a / b in (q, seq q zero) quot a b = fst $ a `divide` b rem a b = snd $ a `divide` b -- | Euclidean (degree) function on r. degree :: Euclidean d => d -> Maybe Natural -- | Euclidean (degree) function on r. degree :: (Euclidean d, Division d) => d -> Maybe Natural -- | Division algorithm. a divide b calculates quotient and -- remainder of a divided by b. -- --
-- let (q, r) = divide a p in p*q + r == a && degree r < degree q --divide :: Euclidean d => d -> d -> (d, d) -- | Division algorithm. a divide b calculates quotient and -- remainder of a divided by b. -- --
-- let (q, r) = divide a p in p*q + r == a && degree r < degree q --divide :: (Euclidean d, Division d) => d -> d -> (d, d) quot :: Euclidean d => d -> d -> d rem :: Euclidean d => d -> d -> d -- | Extended euclidean algorithm. -- --
-- euclid f g == xs ==> all (\(r, s, t) -> r == f * s + g * t) xs --euclid :: (Euclidean d) => d -> d -> [(d, d, d)] prs :: Euclidean r => r -> r -> [(r, r, r)] chineseRemainder :: Euclidean r => [(r, r)] -> r module Numeric.Field.Class class (Euclidean d, Division d) => Field d instance (Numeric.Domain.Internal.Euclidean d, Numeric.Algebra.Division.Division d) => Numeric.Field.Class.Field d module Numeric.Domain.GCD class (IntegralDomain d, UnitNormalForm d, DecidableZero d) => GCDDomain d where gcd a b = let (r, _, _) = egcd a b in r reduceFraction a b = let c = gcd a b in (fromJust (a `maybeQuot` c), fromJust (b `maybeQuot` c)) lcm p q = fromJust $ (p * q) `maybeQuot` (gcd p q) gcd :: GCDDomain d => d -> d -> d gcd :: (GCDDomain d, PID d) => d -> d -> d reduceFraction :: GCDDomain d => d -> d -> (d, d) lcm :: GCDDomain d => d -> d -> d gcd' :: GCDDomain r => NonEmpty r -> r module Numeric.Domain.Integral -- | An integral domain is a commutative domain in which 1≠0. class (Domain d, Commutative d) => IntegralDomain d where m `divides` n | isZero m = False | otherwise = isZero (n `rem` m) m `maybeQuot` n | isZero n = Nothing | otherwise = let (q, r) = m `divide` n in if isZero r then Just q else Nothing divides :: IntegralDomain d => d -> d -> Bool divides :: (IntegralDomain d, Euclidean d) => d -> d -> Bool maybeQuot :: IntegralDomain d => d -> d -> Maybe d maybeQuot :: (IntegralDomain d, Euclidean d) => d -> d -> Maybe d module Numeric.Domain.PID class (UFD d) => PID d where egcd a b = head (euclid a b) egcd :: PID d => d -> d -> (d, d, d) egcd :: (PID d, Euclidean d) => d -> d -> (d, d, d) module Numeric.Domain.UFD class (GCDDomain d) => UFD d module Numeric.Covector -- | Linear functionals from elements of an (infinite) free module to a -- scalar newtype Covector r a Covector :: ((a -> r) -> r) -> Covector r a [$*] :: Covector r a -> (a -> r) -> r counitM :: UnitalAlgebra r a => a -> Covector r () unitM :: CounitalCoalgebra r c => Covector r c comultM :: Algebra r a => a -> Covector r (a, a) multM :: Coalgebra r c => c -> c -> Covector r c invM :: InvolutiveAlgebra r h => h -> Covector r h coinvM :: InvolutiveCoalgebra r h => h -> Covector r h -- | convolveM antipodeM return = convolveM return antipodeM = comultM -- >=> uncurry joinM antipodeM :: HopfAlgebra r h => h -> Covector r h convolveM :: (Algebra r c, Coalgebra r a) => (c -> Covector r a) -> (c -> Covector r a) -> c -> Covector r a instance GHC.Base.Functor (Numeric.Covector.Covector r) instance Data.Functor.Bind.Class.Apply (Numeric.Covector.Covector r) instance GHC.Base.Applicative (Numeric.Covector.Covector r) instance Data.Functor.Bind.Class.Bind (Numeric.Covector.Covector r) instance GHC.Base.Monad (Numeric.Covector.Covector r) instance Numeric.Additive.Class.Additive r => Data.Functor.Alt.Alt (Numeric.Covector.Covector r) instance Numeric.Algebra.Class.Monoidal r => Data.Functor.Plus.Plus (Numeric.Covector.Covector r) instance Numeric.Algebra.Class.Monoidal r => GHC.Base.Alternative (Numeric.Covector.Covector r) instance Numeric.Algebra.Class.Monoidal r => GHC.Base.MonadPlus (Numeric.Covector.Covector r) instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Covector.Covector r a) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.Multiplicative (Numeric.Covector.Covector r m) instance (Numeric.Algebra.Commutative.Commutative m, Numeric.Algebra.Class.Coalgebra r m) => Numeric.Algebra.Commutative.Commutative (Numeric.Covector.Covector r m) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.Semiring (Numeric.Covector.Covector r m) instance Numeric.Algebra.Unital.CounitalCoalgebra r m => Numeric.Algebra.Unital.Unital (Numeric.Covector.Covector r m) instance (Numeric.Rig.Class.Rig r, Numeric.Algebra.Unital.CounitalCoalgebra r m) => Numeric.Rig.Class.Rig (Numeric.Covector.Covector r m) instance (Numeric.Ring.Class.Ring r, Numeric.Algebra.Unital.CounitalCoalgebra r m) => Numeric.Ring.Class.Ring (Numeric.Covector.Covector r m) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Covector.Covector r a) instance (Numeric.Additive.Class.Idempotent r, Numeric.Algebra.Idempotent.IdempotentCoalgebra r a) => Numeric.Algebra.Idempotent.Band (Numeric.Covector.Covector r a) instance Numeric.Algebra.Class.Monoidal s => Numeric.Algebra.Class.Monoidal (Numeric.Covector.Covector s a) instance Numeric.Additive.Class.Abelian s => Numeric.Additive.Class.Abelian (Numeric.Covector.Covector s a) instance Numeric.Additive.Group.Group s => Numeric.Additive.Group.Group (Numeric.Covector.Covector s a) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.LeftModule (Numeric.Covector.Covector r m) (Numeric.Covector.Covector r m) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Covector.Covector s m) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.RightModule (Numeric.Covector.Covector r m) (Numeric.Covector.Covector r m) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Covector.Covector s m) module Numeric.Algebra.Distinguished.Class class Distinguished t e :: Distinguished t => t instance Numeric.Algebra.Distinguished.Class.Distinguished a => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Covector.Covector r a) module Numeric.Algebra.Complex.Class class Distinguished r => Complicated r i :: Complicated r => r instance Numeric.Algebra.Complex.Class.Complicated a => Numeric.Algebra.Complex.Class.Complicated (Numeric.Covector.Covector r a) module Numeric.Algebra.Dual.Class class Distinguished t => Infinitesimal t d :: Infinitesimal t => t instance Numeric.Algebra.Dual.Class.Infinitesimal a => Numeric.Algebra.Dual.Class.Infinitesimal (Numeric.Covector.Covector r a) module Numeric.Algebra.Quaternion.Class class Complicated t => Hamiltonian t j :: Hamiltonian t => t k :: Hamiltonian t => t instance Numeric.Algebra.Quaternion.Class.Hamiltonian a => Numeric.Algebra.Quaternion.Class.Hamiltonian (Numeric.Covector.Covector r a) module Numeric.Coalgebra.Hyperbolic.Class class Hyperbolic r cosh :: Hyperbolic r => r sinh :: Hyperbolic r => r instance Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic a => Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic (Numeric.Covector.Covector r a) module Numeric.Coalgebra.Trigonometric.Class class Trigonometric r cos :: Trigonometric r => r sin :: Trigonometric r => r instance Numeric.Coalgebra.Trigonometric.Class.Trigonometric a => Numeric.Coalgebra.Trigonometric.Class.Trigonometric (Numeric.Covector.Covector r a) module Numeric.Dioid.Class class (Semiring r, Idempotent r) => Dioid r instance (Numeric.Algebra.Class.Semiring r, Numeric.Additive.Class.Idempotent r) => Numeric.Dioid.Class.Dioid r module Numeric.Field.Fraction -- | Fraction field k(D) of GCDDomain domain D. data Fraction d numerator :: Fraction t -> t denominator :: Fraction t -> t -- | Convenient synonym for Fraction. type Ratio = Fraction (%) :: (GCDDomain d) => d -> d -> Fraction d infixl 7 % instance (GHC.Classes.Eq d, GHC.Show.Show d, Numeric.Algebra.Unital.Unital d) => GHC.Show.Show (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Semiring.ZeroProduct.ZeroProductSemiring (Numeric.Field.Fraction.Fraction d) instance (GHC.Classes.Eq d, Numeric.Domain.Internal.GCDDomain d) => GHC.Classes.Eq (Numeric.Field.Fraction.Fraction d) instance (GHC.Classes.Ord d, Numeric.Domain.Internal.GCDDomain d) => GHC.Classes.Ord (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Division.Division (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Commutative.Commutative (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Decidable.Zero.DecidableZero (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Decidable.Units.DecidableUnits (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Decidable.Associates.DecidableAssociates (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Ring.Class.Ring (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Additive.Class.Abelian (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.Semiring (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Additive.Group.Group (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.Monoidal (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.LeftModule GHC.Natural.Natural (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.RightModule GHC.Natural.Natural (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Additive.Class.Additive (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Unital.Unital (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Class.Multiplicative (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Rig.Class.Rig (Numeric.Field.Fraction.Fraction d) instance (Numeric.Rig.Characteristic.Characteristic d, Numeric.Domain.Internal.GCDDomain d) => Numeric.Rig.Characteristic.Characteristic (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Algebra.Unital.UnitNormalForm.UnitNormalForm (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Domain.Internal.IntegralDomain (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Domain.Internal.GCDDomain (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Domain.Internal.UFD (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Domain.Internal.PID (Numeric.Field.Fraction.Fraction d) instance Numeric.Domain.Internal.GCDDomain d => Numeric.Domain.Internal.Euclidean (Numeric.Field.Fraction.Fraction d) module Numeric.Module.Representable -- | `Additive.(+)` default definition addRep :: (Applicative m, Additive r) => m r -> m r -> m r -- | sinnum1p default definition sinnum1pRep :: (Functor m, Additive r) => Natural -> m r -> m r -- | zero default definition zeroRep :: (Applicative m, Monoidal r) => m r -- | sinnum default definition sinnumRep :: (Functor m, Monoidal r) => Natural -> m r -> m r -- | negate default definition negateRep :: (Functor m, Group r) => m r -> m r -- | `Group.(-)` default definition minusRep :: (Applicative m, Group r) => m r -> m r -> m r -- | subtract default definition subtractRep :: (Applicative m, Group r) => m r -> m r -> m r -- | times default definition timesRep :: (Integral n, Functor m, Group r) => n -> m r -> m r -- | `Multiplicative.(*)` default definition mulRep :: (Representable m, Algebra r (Rep m)) => m r -> m r -> m r -- | one default definition oneRep :: (Representable m, Unital r, UnitalAlgebra r (Rep m)) => m r -- | fromNatural default definition fromNaturalRep :: (UnitalAlgebra r (Rep m), Representable m, Rig r) => Natural -> m r -- | fromInteger default definition fromIntegerRep :: (UnitalAlgebra r (Rep m), Representable m, Ring r) => Integer -> m r module Numeric.Order.Additive -- | z + x <= z + y = x <= y = x + z <= y + z class (Additive r, Order r) => AdditiveOrder r instance Numeric.Order.Additive.AdditiveOrder GHC.Integer.Type.Integer instance Numeric.Order.Additive.AdditiveOrder GHC.Natural.Natural instance Numeric.Order.Additive.AdditiveOrder GHC.Types.Bool instance Numeric.Order.Additive.AdditiveOrder () instance (Numeric.Order.Additive.AdditiveOrder a, Numeric.Order.Additive.AdditiveOrder b) => Numeric.Order.Additive.AdditiveOrder (a, b) instance (Numeric.Order.Additive.AdditiveOrder a, Numeric.Order.Additive.AdditiveOrder b, Numeric.Order.Additive.AdditiveOrder c) => Numeric.Order.Additive.AdditiveOrder (a, b, c) instance (Numeric.Order.Additive.AdditiveOrder a, Numeric.Order.Additive.AdditiveOrder b, Numeric.Order.Additive.AdditiveOrder c, Numeric.Order.Additive.AdditiveOrder d) => Numeric.Order.Additive.AdditiveOrder (a, b, c, d) instance (Numeric.Order.Additive.AdditiveOrder a, Numeric.Order.Additive.AdditiveOrder b, Numeric.Order.Additive.AdditiveOrder c, Numeric.Order.Additive.AdditiveOrder d, Numeric.Order.Additive.AdditiveOrder e) => Numeric.Order.Additive.AdditiveOrder (a, b, c, d, e) module Numeric.Rig.Ordered class (AdditiveOrder r, Rig r) => OrderedRig r instance Numeric.Rig.Ordered.OrderedRig GHC.Integer.Type.Integer instance Numeric.Rig.Ordered.OrderedRig GHC.Natural.Natural instance Numeric.Rig.Ordered.OrderedRig GHC.Types.Bool instance Numeric.Rig.Ordered.OrderedRig () instance (Numeric.Rig.Ordered.OrderedRig a, Numeric.Rig.Ordered.OrderedRig b) => Numeric.Rig.Ordered.OrderedRig (a, b) instance (Numeric.Rig.Ordered.OrderedRig a, Numeric.Rig.Ordered.OrderedRig b, Numeric.Rig.Ordered.OrderedRig c) => Numeric.Rig.Ordered.OrderedRig (a, b, c) instance (Numeric.Rig.Ordered.OrderedRig a, Numeric.Rig.Ordered.OrderedRig b, Numeric.Rig.Ordered.OrderedRig c, Numeric.Rig.Ordered.OrderedRig d) => Numeric.Rig.Ordered.OrderedRig (a, b, c, d) instance (Numeric.Rig.Ordered.OrderedRig a, Numeric.Rig.Ordered.OrderedRig b, Numeric.Rig.Ordered.OrderedRig c, Numeric.Rig.Ordered.OrderedRig d, Numeric.Rig.Ordered.OrderedRig e) => Numeric.Rig.Ordered.OrderedRig (a, b, c, d, e) module Numeric.Order.LocallyFinite class Order a => LocallyFiniteOrder a where moebiusInversion x y = case order x y of { Just EQ -> one Just LT -> sumWith (\ z -> if z < y then moebiusInversion x z else zero) $ range x y _ -> zero } range :: LocallyFiniteOrder a => a -> a -> [a] rangeSize :: LocallyFiniteOrder a => a -> a -> Natural moebiusInversion :: (LocallyFiniteOrder a, Ring r) => a -> a -> r instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Natural.Natural instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Integer.Type.Integer instance GHC.Classes.Ord a => Numeric.Order.LocallyFinite.LocallyFiniteOrder (Data.Set.Base.Set a) instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Types.Bool instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Types.Int instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Int.Int8 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Int.Int16 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Int.Int32 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Int.Int64 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Types.Word instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Word.Word8 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Word.Word16 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Word.Word32 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder GHC.Word.Word64 instance Numeric.Order.LocallyFinite.LocallyFiniteOrder () instance (Numeric.Order.LocallyFinite.LocallyFiniteOrder a, Numeric.Order.LocallyFinite.LocallyFiniteOrder b) => Numeric.Order.LocallyFinite.LocallyFiniteOrder (a, b) instance (Numeric.Order.LocallyFinite.LocallyFiniteOrder a, Numeric.Order.LocallyFinite.LocallyFiniteOrder b, Numeric.Order.LocallyFinite.LocallyFiniteOrder c) => Numeric.Order.LocallyFinite.LocallyFiniteOrder (a, b, c) instance (Numeric.Order.LocallyFinite.LocallyFiniteOrder a, Numeric.Order.LocallyFinite.LocallyFiniteOrder b, Numeric.Order.LocallyFinite.LocallyFiniteOrder c, Numeric.Order.LocallyFinite.LocallyFiniteOrder d) => Numeric.Order.LocallyFinite.LocallyFiniteOrder (a, b, c, d) instance (Numeric.Order.LocallyFinite.LocallyFiniteOrder a, Numeric.Order.LocallyFinite.LocallyFiniteOrder b, Numeric.Order.LocallyFinite.LocallyFiniteOrder c, Numeric.Order.LocallyFinite.LocallyFiniteOrder d, Numeric.Order.LocallyFinite.LocallyFiniteOrder e) => Numeric.Order.LocallyFinite.LocallyFiniteOrder (a, b, c, d, e) module Numeric.Algebra.Incidence data Interval a Interval :: a -> a -> Interval a zeta :: Unital r => Interval a -> r moebius :: (Ring r, LocallyFiniteOrder a) => Interval a -> r instance Data.Data.Data a => Data.Data.Data (Numeric.Algebra.Incidence.Interval a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Algebra.Incidence.Interval a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Algebra.Incidence.Interval a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Numeric.Algebra.Incidence.Interval a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Algebra.Incidence.Interval a) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r, Numeric.Order.LocallyFinite.LocallyFiniteOrder a) => Numeric.Algebra.Class.Algebra r (Numeric.Algebra.Incidence.Interval a) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r, Numeric.Order.LocallyFinite.LocallyFiniteOrder a) => Numeric.Algebra.Unital.UnitalAlgebra r (Numeric.Algebra.Incidence.Interval a) module Numeric.Coalgebra.Incidence -- | the dual incidence algebra basis data Interval' a Interval' :: a -> a -> Interval' a zeta' :: Unital r => Interval' a -> r moebius' :: (Ring r, LocallyFiniteOrder a) => Interval' a -> r instance Data.Data.Data a => Data.Data.Data (Numeric.Coalgebra.Incidence.Interval' a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Coalgebra.Incidence.Interval' a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Coalgebra.Incidence.Interval' a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Numeric.Coalgebra.Incidence.Interval' a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Coalgebra.Incidence.Interval' a) instance (GHC.Classes.Eq a, Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.Coalgebra r (Numeric.Coalgebra.Incidence.Interval' a) instance (GHC.Classes.Eq a, GHC.Enum.Bounded a, Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Monoidal r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Unital.CounitalCoalgebra r (Numeric.Coalgebra.Incidence.Interval' a) module Numeric.Quadrance.Class class Additive r => Quadrance r m quadrance :: Quadrance r m => m -> r instance Numeric.Quadrance.Class.Quadrance () a instance (Numeric.Additive.Class.Additive r, Numeric.Algebra.Class.Monoidal r) => Numeric.Quadrance.Class.Quadrance r () instance (Numeric.Quadrance.Class.Quadrance r a, Numeric.Quadrance.Class.Quadrance r b) => Numeric.Quadrance.Class.Quadrance r (a, b) instance (Numeric.Quadrance.Class.Quadrance r a, Numeric.Quadrance.Class.Quadrance r b, Numeric.Quadrance.Class.Quadrance r c) => Numeric.Quadrance.Class.Quadrance r (a, b, c) instance (Numeric.Quadrance.Class.Quadrance r a, Numeric.Quadrance.Class.Quadrance r b, Numeric.Quadrance.Class.Quadrance r c, Numeric.Quadrance.Class.Quadrance r d) => Numeric.Quadrance.Class.Quadrance r (a, b, c, d) instance (Numeric.Quadrance.Class.Quadrance r a, Numeric.Quadrance.Class.Quadrance r b, Numeric.Quadrance.Class.Quadrance r c, Numeric.Quadrance.Class.Quadrance r d, Numeric.Quadrance.Class.Quadrance r e) => Numeric.Quadrance.Class.Quadrance r (a, b, c, d, e) instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Types.Bool instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Types.Int instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Types.Word instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Natural.Natural instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Integer.Type.Integer instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Int.Int8 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Int.Int16 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Int.Int32 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Int.Int64 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Word.Word8 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Word.Word16 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Word.Word32 instance Numeric.Rig.Class.Rig r => Numeric.Quadrance.Class.Quadrance r GHC.Word.Word64 module Numeric.Algebra -- |
-- (a + b) + c = a + (b + c) -- sinnum 1 a = a -- sinnum (2 * n) a = sinnum n a + sinnum n a -- sinnum (2 * n + 1) a = sinnum n a + sinnum n a + a --class Additive r where sinnum1p y0 x0 = f x0 (1 + y0) where f x y | even y = f (x + x) (y `quot` 2) | y == 1 = x | otherwise = g (x + x) (pred y `quot` 2) x g x y z | even y = g (x + x) (y `quot` 2) z | y == 1 = x + z | otherwise = g (x + x) (pred y `quot` 2) (x + z) sumWith1 f = maybe (error "Numeric.Additive.Semigroup.sumWith1: empty structure") id . foldl' mf Nothing where mf Nothing y = Just $! f y mf (Just x) y = Just $! x + f y (+) :: Additive r => r -> r -> r -- | sinnum1p n r = sinnum (1 + n) r sinnum1p :: Additive r => Natural -> r -> r sumWith1 :: (Additive r, Foldable1 f) => (a -> r) -> f a -> r sum1 :: (Foldable1 f, Additive r) => f r -> r -- | an additive abelian semigroup -- -- a + b = b + a class Additive r => Abelian r -- | An additive semigroup with idempotent addition. -- --
-- a + a = a --class Additive r => Idempotent r sinnum1pIdempotent :: Natural -> r -> r sinnumIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r class Additive m => Partitionable m -- | partitionWith f c returns a list containing f a b for each a b such -- that a + b = c, partitionWith :: Partitionable m => (m -> m -> r) -> m -> NonEmpty r -- | An additive monoid -- --
-- zero + a = a = a + zero --class (LeftModule Natural m, RightModule Natural m) => Monoidal m where sinnum 0 _ = zero sinnum n x0 = f x0 n where f x y | even y = f (x + x) (y `quot` 2) | y == 1 = x | otherwise = g (x + x) (pred y `quot` 2) x g x y z | even y = g (x + x) (y `quot` 2) z | y == 1 = x + z | otherwise = g (x + x) (pred y `quot` 2) (x + z) sumWith f = foldl' (\ b a -> b + f a) zero zero :: Monoidal m => m sinnum :: Monoidal m => Natural -> m -> m sumWith :: (Monoidal m, Foldable f) => (a -> m) -> f a -> m sum :: (Foldable f, Monoidal m) => f m -> m class (LeftModule Integer r, RightModule Integer r, Monoidal r) => Group r where times y0 x0 = case compare y0 0 of { LT -> f (negate x0) (negate y0) EQ -> zero GT -> f x0 y0 } where f x y | even y = f (x + x) (y `quot` 2) | y == 1 = x | otherwise = g (x + x) ((y - 1) `quot` 2) x g x y z | even y = g (x + x) (y `quot` 2) z | y == 1 = x + z | otherwise = g (x + x) ((y - 1) `quot` 2) (x + z) negate a = zero - a a - b = a + negate b subtract a b = negate a + b (-) :: Group r => r -> r -> r negate :: Group r => r -> r subtract :: Group r => r -> r -> r times :: (Group r, Integral n) => n -> r -> r -- | A multiplicative semigroup class Multiplicative r where pow1p x0 y0 = f x0 (y0 + 1) where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) productWith1 f = maybe (error "Numeric.Multiplicative.Semigroup.productWith1: empty structure") id . foldl' mf Nothing where mf Nothing y = Just $! f y mf (Just x) y = Just $! x * f y (*) :: Multiplicative r => r -> r -> r pow1p :: Multiplicative r => r -> Natural -> r productWith1 :: (Multiplicative r, Foldable1 f) => (a -> r) -> f a -> r product1 :: (Foldable1 f, Multiplicative r) => f r -> r -- | A commutative multiplicative semigroup class Multiplicative r => Commutative r class Multiplicative r => Unital r where pow _ 0 = one pow x0 y0 = f x0 y0 where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) productWith f = foldl' (\ b a -> b * f a) one one :: Unital r => r pow :: Unital r => r -> Natural -> r productWith :: (Unital r, Foldable f) => (a -> r) -> f a -> r product :: (Foldable f, Unital r) => f r -> r -- | An multiplicative semigroup with idempotent multiplication. -- --
-- a * a = a --class Multiplicative r => Band r pow1pBand :: r -> Natural -> r powBand :: Unital r => r -> Natural -> r class Unital r => Division r where recip a = one / a a / b = a * recip b a \\ b = recip a * b x0 ^ y0 = case compare y0 0 of { LT -> f (recip x0) (negate y0) EQ -> one GT -> f x0 y0 } where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) recip :: Division r => r -> r (/) :: Division r => r -> r -> r (\\) :: Division r => r -> r -> r (^) :: (Division r, Integral n) => r -> n -> r -- | `factorWith f c` returns a non-empty list containing `f a b` for all -- `a, b` such that `a * b = c`. -- -- Results of factorWith f 0 are undefined and may result in either an -- error or an infinite list. class Multiplicative m => Factorable m factorWith :: Factorable m => (m -> m -> r) -> m -> NonEmpty r -- | An semigroup with involution -- --
-- adjoint a * adjoint b = adjoint (b * a) --class Multiplicative r => InvolutiveMultiplication r adjoint :: InvolutiveMultiplication r => r -> r -- |
-- adjoint = id --class (Commutative r, InvolutiveMultiplication r) => TriviallyInvolutive r -- | A pair of an additive abelian semigroup, and a multiplicative -- semigroup, with the distributive laws: -- --
-- a(b + c) = ab + ac -- left distribution (we are a LeftNearSemiring) -- (a + b)c = ac + bc -- right distribution (we are a [Right]NearSemiring) ---- -- Common notation includes the laws for additive and multiplicative -- identity in semiring. -- -- If you want that, look at Rig instead. -- -- Ideally we'd use the cyclic definition: -- --
-- class (LeftModule r r, RightModule r r, Additive r, Abelian r, Multiplicative r) => Semiring r ---- -- to enforce that every semiring r is an r-module over itself, but -- Haskell doesn't like that. class (Additive r, Abelian r, Multiplicative r) => Semiring r -- | adjoint (x + y) = adjoint x + adjoint y class (Semiring r, InvolutiveMultiplication r) => InvolutiveSemiring r class (Semiring r, Idempotent r) => Dioid r -- | A Ring without an identity. class (Group r, Semiring r) => Rng r -- | A Ring without (n)egation class (Semiring r, Unital r, Monoidal r) => Rig r where fromNatural n = sinnum n one fromNatural :: Rig r => Natural -> r class (Rig r, Rng r) => Ring r where fromInteger n = times n one fromInteger :: Ring r => Integer -> r class Ring r => LocalRing r class (Division r, Ring r) => DivisionRing r class (Euclidean d, Division d) => Field d class (Semiring r, Additive m) => LeftModule r m (.*) :: LeftModule r m => r -> m -> m class (Semiring r, Additive m) => RightModule r m (*.) :: RightModule r m => m -> r -> m class (LeftModule r m, RightModule r m) => Module r m -- | An associative algebra built with a free module over a semiring class Semiring r => Algebra r a mult :: Algebra r a => (a -> a -> r) -> a -> r class Semiring r => Coalgebra r c comult :: Coalgebra r c => (c -> r) -> c -> c -> r -- | An associative unital algebra over a semiring, built using a free -- module class Algebra r a => UnitalAlgebra r a unit :: UnitalAlgebra r a => r -> a -> r class Coalgebra r c => CounitalCoalgebra r c counit :: CounitalCoalgebra r c => (c -> r) -> r -- | A bialgebra is both a unital algebra and counital coalgebra where the -- mult and unit are compatible in some sense with the -- comult and counit. That is to say that mult and -- unit are a coalgebra homomorphisms or (equivalently) that -- comult and counit are an algebra homomorphisms. class (UnitalAlgebra r a, CounitalCoalgebra r a) => Bialgebra r a class (InvolutiveSemiring r, Algebra r a) => InvolutiveAlgebra r a inv :: InvolutiveAlgebra r a => (a -> r) -> a -> r class (InvolutiveSemiring r, Coalgebra r c) => InvolutiveCoalgebra r c coinv :: InvolutiveCoalgebra r c => (c -> r) -> c -> r class (Bialgebra r h, InvolutiveAlgebra r h, InvolutiveCoalgebra r h) => InvolutiveBialgebra r h class (CommutativeAlgebra r a, TriviallyInvolutive r, InvolutiveAlgebra r a) => TriviallyInvolutiveAlgebra r a class (CocommutativeCoalgebra r a, TriviallyInvolutive r, InvolutiveCoalgebra r a) => TriviallyInvolutiveCoalgebra r a class (InvolutiveBialgebra r h, TriviallyInvolutiveAlgebra r h, TriviallyInvolutiveCoalgebra r h) => TriviallyInvolutiveBialgebra r h class Algebra r a => IdempotentAlgebra r a class (Bialgebra r h, IdempotentAlgebra r h, IdempotentCoalgebra r h) => IdempotentBialgebra r h class Algebra r a => CommutativeAlgebra r a class (Bialgebra r h, CommutativeAlgebra r h, CocommutativeCoalgebra r h) => CommutativeBialgebra r h class Coalgebra r c => CocommutativeCoalgebra r c class UnitalAlgebra r a => DivisionAlgebra r a recipriocal :: DivisionAlgebra r a => (a -> r) -> a -> r -- | A HopfAlgebra algebra on a semiring, where the module is free. -- -- When antipode . antipode = id and antipode is an -- antihomomorphism then we are an InvolutiveBialgebra with inv = -- antipode as well class Bialgebra r h => HopfAlgebra r h antipode :: HopfAlgebra r h => (h -> r) -> h -> r class Rig r => Characteristic r char :: Characteristic r => proxy r -> Natural charInt :: (Integral s, Bounded s) => proxy s -> Natural charWord :: (Integral s, Bounded s) => proxy s -> Natural class Order a where a <~ b = maybe False (<= EQ) (order a b) a < b = order a b == Just LT a >~ b = b <~ a a > b = order a b == Just GT a ~~ b = order a b == Just EQ a /~ b = order a b /= Just EQ order a b | a <~ b = Just $ if b <~ a then EQ else LT | b <~ a = Just GT | otherwise = Nothing comparable a b = maybe False (const True) (order a b) (<~) :: Order a => a -> a -> Bool (<) :: Order a => a -> a -> Bool (>~) :: Order a => a -> a -> Bool (>) :: Order a => a -> a -> Bool (~~) :: Order a => a -> a -> Bool (/~) :: Order a => a -> a -> Bool order :: Order a => a -> a -> Maybe Ordering comparable :: Order a => a -> a -> Bool class (AdditiveOrder r, Rig r) => OrderedRig r -- | z + x <= z + y = x <= y = x + z <= y + z class (Additive r, Order r) => AdditiveOrder r class Order a => LocallyFiniteOrder a where moebiusInversion x y = case order x y of { Just EQ -> one Just LT -> sumWith (\ z -> if z < y then moebiusInversion x z else zero) $ range x y _ -> zero } class Monoidal r => DecidableZero r class Unital r => DecidableUnits r where isUnit = isJust . recipUnit x0 ^? y0 = case compare y0 0 of { LT -> fmap (`f` negate y0) (recipUnit x0) EQ -> Just one GT -> Just (f x0 y0) } where f x y | even y = f (x * x) (y `quot` 2) | y == 1 = x | otherwise = g (x * x) ((y - 1) `quot` 2) x g x y z | even y = g (x * x) (y `quot` 2) z | y == 1 = x * z | otherwise = g (x * x) ((y - 1) `quot` 2) (x * z) class Unital r => DecidableAssociates r -- | Type representing arbitrary-precision non-negative integers. -- -- Operations whose result would be negative throw -- (Underflow :: ArithException). data Natural :: * -- | `Additive.(+)` default definition addRep :: (Applicative m, Additive r) => m r -> m r -> m r -- | sinnum1p default definition sinnum1pRep :: (Functor m, Additive r) => Natural -> m r -> m r -- | zero default definition zeroRep :: (Applicative m, Monoidal r) => m r -- | sinnum default definition sinnumRep :: (Functor m, Monoidal r) => Natural -> m r -> m r -- | negate default definition negateRep :: (Functor m, Group r) => m r -> m r -- | `Group.(-)` default definition minusRep :: (Applicative m, Group r) => m r -> m r -> m r -- | subtract default definition subtractRep :: (Applicative m, Group r) => m r -> m r -> m r -- | times default definition timesRep :: (Integral n, Functor m, Group r) => n -> m r -> m r -- | `Multiplicative.(*)` default definition mulRep :: (Representable m, Algebra r (Rep m)) => m r -> m r -> m r -- | one default definition oneRep :: (Representable m, Unital r, UnitalAlgebra r (Rep m)) => m r -- | fromNatural default definition fromNaturalRep :: (UnitalAlgebra r (Rep m), Representable m, Rig r) => Natural -> m r -- | fromInteger default definition fromIntegerRep :: (UnitalAlgebra r (Rep m), Representable m, Ring r) => Integer -> m r class Additive r => Quadrance r m quadrance :: Quadrance r m => m -> r -- | Linear functionals from elements of an (infinite) free module to a -- scalar newtype Covector r a Covector :: ((a -> r) -> r) -> Covector r a [$*] :: Covector r a -> (a -> r) -> r counitM :: UnitalAlgebra r a => a -> Covector r () unitM :: CounitalCoalgebra r c => Covector r c comultM :: Algebra r a => a -> Covector r (a, a) multM :: Coalgebra r c => c -> c -> Covector r c invM :: InvolutiveAlgebra r h => h -> Covector r h coinvM :: InvolutiveCoalgebra r h => h -> Covector r h -- | convolveM antipodeM return = convolveM return antipodeM = comultM -- >=> uncurry joinM antipodeM :: HopfAlgebra r h => h -> Covector r h convolveM :: (Algebra r c, Coalgebra r a) => (c -> Covector r a) -> (c -> Covector r a) -> c -> Covector r a module Numeric.Algebra.Complex class Distinguished t e :: Distinguished t => t class Distinguished r => Complicated r i :: Complicated r => r data ComplexBasis E :: ComplexBasis I :: ComplexBasis data Complex a Complex :: a -> a -> Complex a realPart :: (Representable f, Rep f ~ ComplexBasis) => f a -> a imagPart :: (Representable f, Rep f ~ ComplexBasis) => f a -> a -- | half of the Cayley-Dickson quaternion isomorphism uncomplicate :: Hamiltonian q => ComplexBasis -> ComplexBasis -> q instance Data.Data.Data a => Data.Data.Data (Numeric.Algebra.Complex.Complex a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Algebra.Complex.Complex a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Algebra.Complex.Complex a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Algebra.Complex.Complex a) instance Data.Data.Data Numeric.Algebra.Complex.ComplexBasis instance GHC.Enum.Bounded Numeric.Algebra.Complex.ComplexBasis instance GHC.Arr.Ix Numeric.Algebra.Complex.ComplexBasis instance GHC.Enum.Enum Numeric.Algebra.Complex.ComplexBasis instance GHC.Read.Read Numeric.Algebra.Complex.ComplexBasis instance GHC.Show.Show Numeric.Algebra.Complex.ComplexBasis instance GHC.Classes.Ord Numeric.Algebra.Complex.ComplexBasis instance GHC.Classes.Eq Numeric.Algebra.Complex.ComplexBasis instance Numeric.Algebra.Distinguished.Class.Distinguished Numeric.Algebra.Complex.ComplexBasis instance Numeric.Algebra.Complex.Class.Complicated Numeric.Algebra.Complex.ComplexBasis instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Algebra.Complex.Complex r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Algebra.Complex.Complex r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Algebra.Complex.ComplexBasis -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Algebra.Complex.ComplexBasis -> r) instance Data.Functor.Rep.Representable Numeric.Algebra.Complex.Complex instance Data.Distributive.Distributive Numeric.Algebra.Complex.Complex instance GHC.Base.Functor Numeric.Algebra.Complex.Complex instance Data.Functor.Bind.Class.Apply Numeric.Algebra.Complex.Complex instance GHC.Base.Applicative Numeric.Algebra.Complex.Complex instance Data.Functor.Bind.Class.Bind Numeric.Algebra.Complex.Complex instance GHC.Base.Monad Numeric.Algebra.Complex.Complex instance Control.Monad.Reader.Class.MonadReader Numeric.Algebra.Complex.ComplexBasis Numeric.Algebra.Complex.Complex instance Data.Foldable.Foldable Numeric.Algebra.Complex.Complex instance Data.Traversable.Traversable Numeric.Algebra.Complex.Complex instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Algebra.Complex.Complex instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Algebra.Complex.Complex instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Algebra.Complex.Complex r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Algebra.Complex.Complex s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Algebra.Complex.Complex s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Algebra.Complex.Complex r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Algebra.Complex.Complex r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Algebra.Complex.Complex r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Algebra.Complex.Complex r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Algebra.Complex.Complex r) instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Class.Algebra k Numeric.Algebra.Complex.ComplexBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.UnitalAlgebra k Numeric.Algebra.Complex.ComplexBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Class.Coalgebra k Numeric.Algebra.Complex.ComplexBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.CounitalCoalgebra k Numeric.Algebra.Complex.ComplexBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.Bialgebra k Numeric.Algebra.Complex.ComplexBasis instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Involutive.InvolutiveAlgebra k Numeric.Algebra.Complex.ComplexBasis instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Involutive.InvolutiveCoalgebra k Numeric.Algebra.Complex.ComplexBasis instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Hopf.HopfAlgebra k Numeric.Algebra.Complex.ComplexBasis instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Multiplicative (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Commutative.Commutative (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Semiring (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Algebra.Unital.Unital (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Rig.Class.Rig (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.LeftModule (Numeric.Algebra.Complex.Complex r) (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.RightModule (Numeric.Algebra.Complex.Complex r) (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveMultiplication r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveSemiring (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Quadrance.Class.Quadrance r (Numeric.Algebra.Complex.Complex r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Ring.Division.DivisionRing r) => Numeric.Algebra.Division.Division (Numeric.Algebra.Complex.Complex r) module Numeric.Algebra.Dual class Distinguished t e :: Distinguished t => t class Distinguished t => Infinitesimal t d :: Infinitesimal t => t -- | dual number basis, D^2 = 0. D /= 0. data DualBasis E :: DualBasis D :: DualBasis data Dual a Dual :: a -> a -> Dual a instance Data.Data.Data a => Data.Data.Data (Numeric.Algebra.Dual.Dual a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Algebra.Dual.Dual a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Algebra.Dual.Dual a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Algebra.Dual.Dual a) instance Data.Data.Data Numeric.Algebra.Dual.DualBasis instance GHC.Enum.Bounded Numeric.Algebra.Dual.DualBasis instance GHC.Arr.Ix Numeric.Algebra.Dual.DualBasis instance GHC.Enum.Enum Numeric.Algebra.Dual.DualBasis instance GHC.Read.Read Numeric.Algebra.Dual.DualBasis instance GHC.Show.Show Numeric.Algebra.Dual.DualBasis instance GHC.Classes.Ord Numeric.Algebra.Dual.DualBasis instance GHC.Classes.Eq Numeric.Algebra.Dual.DualBasis instance Numeric.Algebra.Distinguished.Class.Distinguished Numeric.Algebra.Dual.DualBasis instance Numeric.Algebra.Dual.Class.Infinitesimal Numeric.Algebra.Dual.DualBasis instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Algebra.Dual.Dual r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Dual.Class.Infinitesimal (Numeric.Algebra.Dual.Dual r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Algebra.Dual.DualBasis -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Dual.Class.Infinitesimal (Numeric.Algebra.Dual.DualBasis -> r) instance Data.Functor.Rep.Representable Numeric.Algebra.Dual.Dual instance Data.Distributive.Distributive Numeric.Algebra.Dual.Dual instance GHC.Base.Functor Numeric.Algebra.Dual.Dual instance Data.Functor.Bind.Class.Apply Numeric.Algebra.Dual.Dual instance GHC.Base.Applicative Numeric.Algebra.Dual.Dual instance Data.Functor.Bind.Class.Bind Numeric.Algebra.Dual.Dual instance GHC.Base.Monad Numeric.Algebra.Dual.Dual instance Control.Monad.Reader.Class.MonadReader Numeric.Algebra.Dual.DualBasis Numeric.Algebra.Dual.Dual instance Data.Foldable.Foldable Numeric.Algebra.Dual.Dual instance Data.Traversable.Traversable Numeric.Algebra.Dual.Dual instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Algebra.Dual.Dual instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Algebra.Dual.Dual instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Algebra.Dual.Dual r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Algebra.Dual.Dual s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Algebra.Dual.Dual s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Algebra.Dual.Dual r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Algebra.Dual.Dual r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Algebra.Dual.Dual r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Algebra.Dual.Dual r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Algebra.Dual.Dual r) instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Class.Algebra k Numeric.Algebra.Dual.DualBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.UnitalAlgebra k Numeric.Algebra.Dual.DualBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Class.Coalgebra k Numeric.Algebra.Dual.DualBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.CounitalCoalgebra k Numeric.Algebra.Dual.DualBasis instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.Bialgebra k Numeric.Algebra.Dual.DualBasis instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Involutive.InvolutiveAlgebra k Numeric.Algebra.Dual.DualBasis instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Involutive.InvolutiveCoalgebra k Numeric.Algebra.Dual.DualBasis instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Hopf.HopfAlgebra k Numeric.Algebra.Dual.DualBasis instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Multiplicative (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Commutative.Commutative (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Semiring (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Algebra.Unital.Unital (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Rig.Class.Rig (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.LeftModule (Numeric.Algebra.Dual.Dual r) (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.RightModule (Numeric.Algebra.Dual.Dual r) (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveSemiring (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Quadrance.Class.Quadrance r (Numeric.Algebra.Dual.Dual r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Ring.Division.DivisionRing r) => Numeric.Algebra.Division.Division (Numeric.Algebra.Dual.Dual r) module Numeric.Algebra.Hyperbolic class Hyperbolic r cosh :: Hyperbolic r => r sinh :: Hyperbolic r => r data HyperBasis' Cosh' :: HyperBasis' Sinh' :: HyperBasis' data Hyper' a Hyper' :: a -> a -> Hyper' a instance Data.Data.Data a => Data.Data.Data (Numeric.Algebra.Hyperbolic.Hyper' a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Algebra.Hyperbolic.Hyper' a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Algebra.Hyperbolic.Hyper' a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Algebra.Hyperbolic.Hyper' a) instance Data.Data.Data Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Enum.Bounded Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Arr.Ix Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Enum.Enum Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Read.Read Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Show.Show Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Classes.Ord Numeric.Algebra.Hyperbolic.HyperBasis' instance GHC.Classes.Eq Numeric.Algebra.Hyperbolic.HyperBasis' instance Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic Numeric.Algebra.Hyperbolic.HyperBasis' instance Numeric.Rig.Class.Rig r => Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic (Numeric.Algebra.Hyperbolic.Hyper' r) instance Numeric.Rig.Class.Rig r => Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic (Numeric.Algebra.Hyperbolic.HyperBasis' -> r) instance Data.Functor.Rep.Representable Numeric.Algebra.Hyperbolic.Hyper' instance Data.Distributive.Distributive Numeric.Algebra.Hyperbolic.Hyper' instance GHC.Base.Functor Numeric.Algebra.Hyperbolic.Hyper' instance Data.Functor.Bind.Class.Apply Numeric.Algebra.Hyperbolic.Hyper' instance GHC.Base.Applicative Numeric.Algebra.Hyperbolic.Hyper' instance Data.Functor.Bind.Class.Bind Numeric.Algebra.Hyperbolic.Hyper' instance GHC.Base.Monad Numeric.Algebra.Hyperbolic.Hyper' instance Control.Monad.Reader.Class.MonadReader Numeric.Algebra.Hyperbolic.HyperBasis' Numeric.Algebra.Hyperbolic.Hyper' instance Data.Foldable.Foldable Numeric.Algebra.Hyperbolic.Hyper' instance Data.Traversable.Traversable Numeric.Algebra.Hyperbolic.Hyper' instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Algebra.Hyperbolic.Hyper' instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Algebra.Hyperbolic.Hyper' instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Algebra.Hyperbolic.Hyper' r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Algebra.Hyperbolic.Hyper' s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Algebra.Hyperbolic.Hyper' s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Algebra.Hyperbolic.Hyper' r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Algebra.Hyperbolic.Hyper' r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Algebra.Hyperbolic.Hyper' r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Algebra.Hyperbolic.Hyper' r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Algebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Monoidal k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Unital.UnitalAlgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Monoidal k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Coalgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Monoidal k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Unital.CounitalCoalgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Monoidal k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Unital.Bialgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Involutive.InvolutiveAlgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Involutive.InvolutiveCoalgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Hopf.HopfAlgebra k Numeric.Algebra.Hyperbolic.HyperBasis' instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Multiplicative (Numeric.Algebra.Hyperbolic.Hyper' k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Commutative.Commutative (Numeric.Algebra.Hyperbolic.Hyper' k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Semiring (Numeric.Algebra.Hyperbolic.Hyper' k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rig.Class.Rig k) => Numeric.Algebra.Unital.Unital (Numeric.Algebra.Hyperbolic.Hyper' k) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rig.Class.Rig r) => Numeric.Rig.Class.Rig (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.LeftModule (Numeric.Algebra.Hyperbolic.Hyper' r) (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.RightModule (Numeric.Algebra.Hyperbolic.Hyper' r) (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveSemiring (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Quadrance.Class.Quadrance r (Numeric.Algebra.Hyperbolic.Hyper' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Ring.Division.DivisionRing r) => Numeric.Algebra.Division.Division (Numeric.Algebra.Hyperbolic.Hyper' r) module Numeric.Algebra.Quaternion class Distinguished t e :: Distinguished t => t class Distinguished r => Complicated r i :: Complicated r => r class Complicated t => Hamiltonian t j :: Hamiltonian t => t k :: Hamiltonian t => t data QuaternionBasis E :: QuaternionBasis I :: QuaternionBasis J :: QuaternionBasis K :: QuaternionBasis data Quaternion a Quaternion :: a -> a -> a -> a -> Quaternion a -- | Cayley-Dickson quaternion isomorphism (one way) complicate :: Complicated c => QuaternionBasis -> (c, c) vectorPart :: (Representable f, Rep f ~ QuaternionBasis) => f r -> (r, r, r) scalarPart :: (Representable f, Rep f ~ QuaternionBasis) => f r -> r instance Data.Data.Data a => Data.Data.Data (Numeric.Algebra.Quaternion.Quaternion a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Algebra.Quaternion.Quaternion a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Algebra.Quaternion.Quaternion a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Algebra.Quaternion.Quaternion a) instance Data.Data.Data Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Arr.Ix Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Enum.Bounded Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Show.Show Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Read.Read Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Enum.Enum Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Classes.Ord Numeric.Algebra.Quaternion.QuaternionBasis instance GHC.Classes.Eq Numeric.Algebra.Quaternion.QuaternionBasis instance Numeric.Algebra.Distinguished.Class.Distinguished Numeric.Algebra.Quaternion.QuaternionBasis instance Numeric.Algebra.Complex.Class.Complicated Numeric.Algebra.Quaternion.QuaternionBasis instance Numeric.Algebra.Quaternion.Class.Hamiltonian Numeric.Algebra.Quaternion.QuaternionBasis instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Quaternion.Class.Hamiltonian (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Algebra.Quaternion.QuaternionBasis -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Algebra.Quaternion.QuaternionBasis -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Quaternion.Class.Hamiltonian (Numeric.Algebra.Quaternion.QuaternionBasis -> r) instance Data.Functor.Rep.Representable Numeric.Algebra.Quaternion.Quaternion instance Data.Distributive.Distributive Numeric.Algebra.Quaternion.Quaternion instance GHC.Base.Functor Numeric.Algebra.Quaternion.Quaternion instance Data.Functor.Bind.Class.Apply Numeric.Algebra.Quaternion.Quaternion instance GHC.Base.Applicative Numeric.Algebra.Quaternion.Quaternion instance Data.Functor.Bind.Class.Bind Numeric.Algebra.Quaternion.Quaternion instance GHC.Base.Monad Numeric.Algebra.Quaternion.Quaternion instance Control.Monad.Reader.Class.MonadReader Numeric.Algebra.Quaternion.QuaternionBasis Numeric.Algebra.Quaternion.Quaternion instance Data.Foldable.Foldable Numeric.Algebra.Quaternion.Quaternion instance Data.Traversable.Traversable Numeric.Algebra.Quaternion.Quaternion instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Algebra.Quaternion.Quaternion instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Algebra.Quaternion.Quaternion instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Algebra.Quaternion.Quaternion s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Algebra.Quaternion.Quaternion s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Algebra.Quaternion.Quaternion r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Algebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Unital.UnitalAlgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Coalgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Unital.CounitalCoalgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Unital.Bialgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveAlgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveCoalgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Hopf.HopfAlgebra r Numeric.Algebra.Quaternion.QuaternionBasis instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Multiplicative (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Semiring (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r) => Numeric.Algebra.Unital.Unital (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r) => Numeric.Rig.Class.Rig (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.LeftModule (Numeric.Algebra.Quaternion.Quaternion r) (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.RightModule (Numeric.Algebra.Quaternion.Quaternion r) (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Quadrance.Class.Quadrance r (Numeric.Algebra.Quaternion.Quaternion r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r, Numeric.Algebra.Division.Division r) => Numeric.Algebra.Division.Division (Numeric.Algebra.Quaternion.Quaternion r) module Numeric.Coalgebra.Dual class Distinguished t e :: Distinguished t => t class Distinguished t => Infinitesimal t d :: Infinitesimal t => t -- | dual number basis, D^2 = 0. D /= 0. data DualBasis' E :: DualBasis' D :: DualBasis' data Dual' a Dual' :: a -> a -> Dual' a instance Data.Data.Data a => Data.Data.Data (Numeric.Coalgebra.Dual.Dual' a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Coalgebra.Dual.Dual' a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Coalgebra.Dual.Dual' a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Coalgebra.Dual.Dual' a) instance Data.Data.Data Numeric.Coalgebra.Dual.DualBasis' instance GHC.Enum.Bounded Numeric.Coalgebra.Dual.DualBasis' instance GHC.Arr.Ix Numeric.Coalgebra.Dual.DualBasis' instance GHC.Enum.Enum Numeric.Coalgebra.Dual.DualBasis' instance GHC.Read.Read Numeric.Coalgebra.Dual.DualBasis' instance GHC.Show.Show Numeric.Coalgebra.Dual.DualBasis' instance GHC.Classes.Ord Numeric.Coalgebra.Dual.DualBasis' instance GHC.Classes.Eq Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Algebra.Distinguished.Class.Distinguished Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Algebra.Dual.Class.Infinitesimal Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Dual.Class.Infinitesimal (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Coalgebra.Dual.DualBasis' -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Dual.Class.Infinitesimal (Numeric.Coalgebra.Dual.DualBasis' -> r) instance Data.Functor.Rep.Representable Numeric.Coalgebra.Dual.Dual' instance Data.Distributive.Distributive Numeric.Coalgebra.Dual.Dual' instance GHC.Base.Functor Numeric.Coalgebra.Dual.Dual' instance Data.Functor.Bind.Class.Apply Numeric.Coalgebra.Dual.Dual' instance GHC.Base.Applicative Numeric.Coalgebra.Dual.Dual' instance Data.Functor.Bind.Class.Bind Numeric.Coalgebra.Dual.Dual' instance GHC.Base.Monad Numeric.Coalgebra.Dual.Dual' instance Control.Monad.Reader.Class.MonadReader Numeric.Coalgebra.Dual.DualBasis' Numeric.Coalgebra.Dual.Dual' instance Data.Foldable.Foldable Numeric.Coalgebra.Dual.Dual' instance Data.Traversable.Traversable Numeric.Coalgebra.Dual.Dual' instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Coalgebra.Dual.Dual' instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Coalgebra.Dual.Dual' instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Coalgebra.Dual.Dual' s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Coalgebra.Dual.Dual' s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Coalgebra.Dual.Dual' r) instance Numeric.Algebra.Class.Semiring k => Numeric.Algebra.Class.Algebra k Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Algebra.Class.Semiring k => Numeric.Algebra.Unital.UnitalAlgebra k Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Class.Coalgebra k Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.CounitalCoalgebra k Numeric.Coalgebra.Dual.DualBasis' instance Numeric.Rng.Class.Rng k => Numeric.Algebra.Unital.Bialgebra k Numeric.Coalgebra.Dual.DualBasis' instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Involutive.InvolutiveAlgebra k Numeric.Coalgebra.Dual.DualBasis' instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Involutive.InvolutiveCoalgebra k Numeric.Coalgebra.Dual.DualBasis' instance (Numeric.Algebra.Involutive.InvolutiveSemiring k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Hopf.HopfAlgebra k Numeric.Coalgebra.Dual.DualBasis' instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Multiplicative (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Commutative.Commutative (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Semiring (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Algebra.Unital.Unital (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Rig.Class.Rig (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.LeftModule (Numeric.Coalgebra.Dual.Dual' r) (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.RightModule (Numeric.Coalgebra.Dual.Dual' r) (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveSemiring (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Quadrance.Class.Quadrance r (Numeric.Coalgebra.Dual.Dual' r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Ring.Division.DivisionRing r) => Numeric.Algebra.Division.Division (Numeric.Coalgebra.Dual.Dual' r) module Numeric.Coalgebra.Geometric newtype BasisCoblade m BasisCoblade :: Word64 -> BasisCoblade m [runBasisCoblade] :: BasisCoblade m -> Word64 type Comultivector r m = Covector r (BasisCoblade m) class Eigenbasis m euclidean :: Eigenbasis m => proxy m -> Bool antiEuclidean :: Eigenbasis m => proxy m -> Bool v :: Eigenbasis m => m -> BasisCoblade m e :: Eigenbasis m => Int -> m class (Ring r, Eigenbasis m) => Eigenmetric r m metric :: Eigenmetric r m => m -> r newtype Euclidean Euclidean :: Int -> Euclidean grade :: BasisCoblade m -> Int filterGrade :: Monoidal r => BasisCoblade m -> Int -> Comultivector r m reverse :: Group r => BasisCoblade m -> Comultivector r m gradeInversion :: Group r => BasisCoblade m -> Comultivector r m cliffordConjugate :: Group r => BasisCoblade m -> Comultivector r m geometric :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m outer :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m contractL :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m contractR :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m hestenes :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m dot :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m liftProduct :: (BasisCoblade m -> BasisCoblade m -> Comultivector r m) -> Comultivector r m -> Comultivector r m -> Comultivector r m instance Numeric.Ring.Class.Ring Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Rig.Class.Rig Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.Semiring Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Commutative.Commutative Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Unital.Unital Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Involutive.InvolutiveSemiring Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Involutive.InvolutiveMultiplication Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Involutive.TriviallyInvolutive Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.Multiplicative Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Additive.Group.Group Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Additive.Class.Abelian Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.Monoidal Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Additive.Class.Additive Numeric.Coalgebra.Geometric.Euclidean instance Data.Data.Data Numeric.Coalgebra.Geometric.Euclidean instance GHC.Real.Integral Numeric.Coalgebra.Geometric.Euclidean instance GHC.Real.Real Numeric.Coalgebra.Geometric.Euclidean instance GHC.Enum.Enum Numeric.Coalgebra.Geometric.Euclidean instance GHC.Arr.Ix Numeric.Coalgebra.Geometric.Euclidean instance GHC.Num.Num Numeric.Coalgebra.Geometric.Euclidean instance GHC.Read.Read Numeric.Coalgebra.Geometric.Euclidean instance GHC.Show.Show Numeric.Coalgebra.Geometric.Euclidean instance GHC.Classes.Ord Numeric.Coalgebra.Geometric.Euclidean instance GHC.Classes.Eq Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Decidable.Units.DecidableUnits (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Decidable.Associates.DecidableAssociates (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Decidable.Zero.DecidableZero (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Rig.Class.Rig (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Class.Semiring (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Commutative.Commutative (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Unital.Unital (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Class.Multiplicative (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Class.Monoidal (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Class.RightModule GHC.Natural.Natural (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Algebra.Class.LeftModule GHC.Natural.Natural (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Additive.Class.Abelian (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Additive.Class.Additive (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Real.Integral (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Real.Real (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Read.Read (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Show.Show (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Enum.Bounded (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Arr.Ix (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Enum.Enum (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Data.Bits.Bits (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Num.Num (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Classes.Ord (Numeric.Coalgebra.Geometric.BasisCoblade m) instance GHC.Classes.Eq (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Coalgebra.Geometric.Eigenbasis Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Ring.Class.Ring r => Numeric.Coalgebra.Geometric.Eigenmetric r Numeric.Coalgebra.Geometric.Euclidean instance Numeric.Coalgebra.Geometric.Eigenmetric r m => Numeric.Algebra.Class.Coalgebra r (Numeric.Coalgebra.Geometric.BasisCoblade m) instance Numeric.Coalgebra.Geometric.Eigenmetric r m => Numeric.Algebra.Unital.CounitalCoalgebra r (Numeric.Coalgebra.Geometric.BasisCoblade m) module Numeric.Coalgebra.Hyperbolic class Hyperbolic r cosh :: Hyperbolic r => r sinh :: Hyperbolic r => r data HyperBasis Cosh :: HyperBasis Sinh :: HyperBasis data Hyper a Hyper :: a -> a -> Hyper a instance Data.Data.Data a => Data.Data.Data (Numeric.Coalgebra.Hyperbolic.Hyper a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Coalgebra.Hyperbolic.Hyper a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Coalgebra.Hyperbolic.Hyper a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Coalgebra.Hyperbolic.Hyper a) instance Data.Data.Data Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Enum.Bounded Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Arr.Ix Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Enum.Enum Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Read.Read Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Show.Show Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Classes.Ord Numeric.Coalgebra.Hyperbolic.HyperBasis instance GHC.Classes.Eq Numeric.Coalgebra.Hyperbolic.HyperBasis instance Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic Numeric.Coalgebra.Hyperbolic.HyperBasis instance Numeric.Rig.Class.Rig r => Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Rig.Class.Rig r => Numeric.Coalgebra.Hyperbolic.Class.Hyperbolic (Numeric.Coalgebra.Hyperbolic.HyperBasis -> r) instance Data.Functor.Rep.Representable Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Distributive.Distributive Numeric.Coalgebra.Hyperbolic.Hyper instance GHC.Base.Functor Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Functor.Bind.Class.Apply Numeric.Coalgebra.Hyperbolic.Hyper instance GHC.Base.Applicative Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Functor.Bind.Class.Bind Numeric.Coalgebra.Hyperbolic.Hyper instance GHC.Base.Monad Numeric.Coalgebra.Hyperbolic.Hyper instance Control.Monad.Reader.Class.MonadReader Numeric.Coalgebra.Hyperbolic.HyperBasis Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Foldable.Foldable Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Traversable.Traversable Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Coalgebra.Hyperbolic.Hyper instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Coalgebra.Hyperbolic.Hyper instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Coalgebra.Hyperbolic.Hyper s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Coalgebra.Hyperbolic.Hyper s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Coalgebra.Hyperbolic.Hyper r) instance Numeric.Algebra.Class.Semiring k => Numeric.Algebra.Class.Algebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance Numeric.Algebra.Class.Semiring k => Numeric.Algebra.Unital.UnitalAlgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Coalgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Unital.CounitalCoalgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Unital.Bialgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Involutive.InvolutiveAlgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Involutive.InvolutiveCoalgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Hopf.HopfAlgebra k Numeric.Coalgebra.Hyperbolic.HyperBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Multiplicative (Numeric.Coalgebra.Hyperbolic.Hyper k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Commutative.Commutative (Numeric.Coalgebra.Hyperbolic.Hyper k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Algebra.Class.Semiring k) => Numeric.Algebra.Class.Semiring (Numeric.Coalgebra.Hyperbolic.Hyper k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rig.Class.Rig k) => Numeric.Algebra.Unital.Unital (Numeric.Coalgebra.Hyperbolic.Hyper k) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rig.Class.Rig r) => Numeric.Rig.Class.Rig (Numeric.Coalgebra.Hyperbolic.Hyper r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Coalgebra.Hyperbolic.Hyper r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.LeftModule (Numeric.Coalgebra.Hyperbolic.Hyper r) (Numeric.Coalgebra.Hyperbolic.Hyper r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.RightModule (Numeric.Coalgebra.Hyperbolic.Hyper r) (Numeric.Coalgebra.Hyperbolic.Hyper r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Additive.Group.Group r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Coalgebra.Hyperbolic.Hyper r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Additive.Group.Group r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveSemiring (Numeric.Coalgebra.Hyperbolic.Hyper r) module Numeric.Coalgebra.Quaternion class Distinguished t e :: Distinguished t => t class Distinguished r => Complicated r i :: Complicated r => r class Complicated t => Hamiltonian t j :: Hamiltonian t => t k :: Hamiltonian t => t data QuaternionBasis' E' :: QuaternionBasis' I' :: QuaternionBasis' J' :: QuaternionBasis' K' :: QuaternionBasis' data Quaternion' a Quaternion' :: a -> a -> a -> a -> Quaternion' a -- | Cayley-Dickson quaternion isomorphism (one way) complicate' :: Complicated c => QuaternionBasis' -> (c, c) vectorPart' :: (Representable f, Rep f ~ QuaternionBasis') => f r -> (r, r, r) scalarPart' :: (Representable f, Rep f ~ QuaternionBasis') => f r -> r instance Data.Data.Data a => Data.Data.Data (Numeric.Coalgebra.Quaternion.Quaternion' a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Coalgebra.Quaternion.Quaternion' a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Coalgebra.Quaternion.Quaternion' a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Coalgebra.Quaternion.Quaternion' a) instance Data.Data.Data Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Arr.Ix Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Enum.Bounded Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Show.Show Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Read.Read Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Enum.Enum Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Classes.Ord Numeric.Coalgebra.Quaternion.QuaternionBasis' instance GHC.Classes.Eq Numeric.Coalgebra.Quaternion.QuaternionBasis' instance Numeric.Algebra.Distinguished.Class.Distinguished Numeric.Coalgebra.Quaternion.QuaternionBasis' instance Numeric.Algebra.Complex.Class.Complicated Numeric.Coalgebra.Quaternion.QuaternionBasis' instance Numeric.Algebra.Quaternion.Class.Hamiltonian Numeric.Coalgebra.Quaternion.QuaternionBasis' instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Quaternion.Class.Hamiltonian (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Coalgebra.Quaternion.QuaternionBasis' -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Coalgebra.Quaternion.QuaternionBasis' -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Quaternion.Class.Hamiltonian (Numeric.Coalgebra.Quaternion.QuaternionBasis' -> r) instance Data.Functor.Rep.Representable Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Distributive.Distributive Numeric.Coalgebra.Quaternion.Quaternion' instance GHC.Base.Functor Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Functor.Bind.Class.Apply Numeric.Coalgebra.Quaternion.Quaternion' instance GHC.Base.Applicative Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Functor.Bind.Class.Bind Numeric.Coalgebra.Quaternion.Quaternion' instance GHC.Base.Monad Numeric.Coalgebra.Quaternion.Quaternion' instance Control.Monad.Reader.Class.MonadReader Numeric.Coalgebra.Quaternion.QuaternionBasis' Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Foldable.Foldable Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Traversable.Traversable Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Coalgebra.Quaternion.Quaternion' instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Coalgebra.Quaternion.Quaternion' instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Coalgebra.Quaternion.Quaternion' s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Coalgebra.Quaternion.Quaternion' s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Coalgebra.Quaternion.Quaternion' r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.Algebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Unital.UnitalAlgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.Coalgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Unital.CounitalCoalgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Unital.Bialgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveAlgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveCoalgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Involutive.InvolutiveSemiring r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Hopf.HopfAlgebra r Numeric.Coalgebra.Quaternion.QuaternionBasis' instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.Multiplicative (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Algebra.Class.Semiring r) => Numeric.Algebra.Class.Semiring (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r) => Numeric.Algebra.Unital.Unital (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r) => Numeric.Rig.Class.Rig (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.LeftModule (Numeric.Coalgebra.Quaternion.Quaternion' r) (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.RightModule (Numeric.Coalgebra.Quaternion.Quaternion' r) (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Rng.Class.Rng r) => Numeric.Quadrance.Class.Quadrance r (Numeric.Coalgebra.Quaternion.Quaternion' r) instance (Numeric.Algebra.Involutive.TriviallyInvolutive r, Numeric.Ring.Class.Ring r, Numeric.Algebra.Division.Division r) => Numeric.Algebra.Division.Division (Numeric.Coalgebra.Quaternion.Quaternion' r) module Numeric.Coalgebra.Trigonometric class Trigonometric r cos :: Trigonometric r => r sin :: Trigonometric r => r data TrigBasis Cos :: TrigBasis Sin :: TrigBasis data Trig a Trig :: a -> a -> Trig a instance Data.Data.Data a => Data.Data.Data (Numeric.Coalgebra.Trigonometric.Trig a) instance GHC.Read.Read a => GHC.Read.Read (Numeric.Coalgebra.Trigonometric.Trig a) instance GHC.Show.Show a => GHC.Show.Show (Numeric.Coalgebra.Trigonometric.Trig a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Numeric.Coalgebra.Trigonometric.Trig a) instance Data.Data.Data Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Enum.Bounded Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Arr.Ix Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Enum.Enum Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Read.Read Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Show.Show Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Classes.Ord Numeric.Coalgebra.Trigonometric.TrigBasis instance GHC.Classes.Eq Numeric.Coalgebra.Trigonometric.TrigBasis instance Numeric.Algebra.Distinguished.Class.Distinguished Numeric.Coalgebra.Trigonometric.TrigBasis instance Numeric.Algebra.Complex.Class.Complicated Numeric.Coalgebra.Trigonometric.TrigBasis instance Numeric.Coalgebra.Trigonometric.Class.Trigonometric Numeric.Coalgebra.Trigonometric.TrigBasis instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Rig.Class.Rig r => Numeric.Coalgebra.Trigonometric.Class.Trigonometric (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Distinguished.Class.Distinguished (Numeric.Coalgebra.Trigonometric.TrigBasis -> r) instance Numeric.Rig.Class.Rig r => Numeric.Algebra.Complex.Class.Complicated (Numeric.Coalgebra.Trigonometric.TrigBasis -> r) instance Numeric.Rig.Class.Rig r => Numeric.Coalgebra.Trigonometric.Class.Trigonometric (Numeric.Coalgebra.Trigonometric.TrigBasis -> r) instance Data.Functor.Rep.Representable Numeric.Coalgebra.Trigonometric.Trig instance Data.Distributive.Distributive Numeric.Coalgebra.Trigonometric.Trig instance GHC.Base.Functor Numeric.Coalgebra.Trigonometric.Trig instance Data.Functor.Bind.Class.Apply Numeric.Coalgebra.Trigonometric.Trig instance GHC.Base.Applicative Numeric.Coalgebra.Trigonometric.Trig instance Data.Functor.Bind.Class.Bind Numeric.Coalgebra.Trigonometric.Trig instance GHC.Base.Monad Numeric.Coalgebra.Trigonometric.Trig instance Control.Monad.Reader.Class.MonadReader Numeric.Coalgebra.Trigonometric.TrigBasis Numeric.Coalgebra.Trigonometric.Trig instance Data.Foldable.Foldable Numeric.Coalgebra.Trigonometric.Trig instance Data.Traversable.Traversable Numeric.Coalgebra.Trigonometric.Trig instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Coalgebra.Trigonometric.Trig instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Coalgebra.Trigonometric.Trig instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Coalgebra.Trigonometric.Trig s) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Coalgebra.Trigonometric.Trig s) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Coalgebra.Trigonometric.Trig r) instance Numeric.Additive.Class.Partitionable r => Numeric.Additive.Class.Partitionable (Numeric.Coalgebra.Trigonometric.Trig r) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Class.Algebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Unital.UnitalAlgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Class.Coalgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Unital.Bialgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Involutive.InvolutiveAlgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Involutive.InvolutiveCoalgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Additive.Group.Group k, Numeric.Algebra.Involutive.InvolutiveSemiring k) => Numeric.Algebra.Hopf.HopfAlgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Unital.CounitalCoalgebra k Numeric.Coalgebra.Trigonometric.TrigBasis instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Class.Multiplicative (Numeric.Coalgebra.Trigonometric.Trig k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Commutative.Commutative (Numeric.Coalgebra.Trigonometric.Trig k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Rng.Class.Rng k) => Numeric.Algebra.Class.Semiring (Numeric.Coalgebra.Trigonometric.Trig k) instance (Numeric.Algebra.Commutative.Commutative k, Numeric.Ring.Class.Ring k) => Numeric.Algebra.Unital.Unital (Numeric.Coalgebra.Trigonometric.Trig k) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Rig.Class.Rig (Numeric.Coalgebra.Trigonometric.Trig r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Ring.Class.Ring r) => Numeric.Ring.Class.Ring (Numeric.Coalgebra.Trigonometric.Trig r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.LeftModule (Numeric.Coalgebra.Trigonometric.Trig r) (Numeric.Coalgebra.Trigonometric.Trig r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Class.RightModule (Numeric.Coalgebra.Trigonometric.Trig r) (Numeric.Coalgebra.Trigonometric.Trig r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveMultiplication r) => Numeric.Algebra.Involutive.InvolutiveMultiplication (Numeric.Coalgebra.Trigonometric.Trig r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r, Numeric.Algebra.Involutive.InvolutiveSemiring r) => Numeric.Algebra.Involutive.InvolutiveSemiring (Numeric.Coalgebra.Trigonometric.Trig r) module Numeric.Decidable.Nilpotent -- | An element x is nilpotent if there exists n s.t. -- pow1p x n is zero. class (Monoidal r, Multiplicative r) => DecidableNilpotent r isNilpotent :: DecidableNilpotent r => r -> Bool instance Numeric.Decidable.Nilpotent.DecidableNilpotent () instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Types.Bool instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Natural.Natural instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Integer.Type.Integer instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Types.Int instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Int.Int8 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Int.Int16 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Int.Int32 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Int.Int64 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Word.Word8 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Word.Word16 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Word.Word32 instance Numeric.Decidable.Nilpotent.DecidableNilpotent GHC.Word.Word64 instance (Numeric.Decidable.Nilpotent.DecidableNilpotent a, Numeric.Decidable.Nilpotent.DecidableNilpotent b) => Numeric.Decidable.Nilpotent.DecidableNilpotent (a, b) instance (Numeric.Decidable.Nilpotent.DecidableNilpotent a, Numeric.Decidable.Nilpotent.DecidableNilpotent b, Numeric.Decidable.Nilpotent.DecidableNilpotent c) => Numeric.Decidable.Nilpotent.DecidableNilpotent (a, b, c) instance (Numeric.Decidable.Nilpotent.DecidableNilpotent a, Numeric.Decidable.Nilpotent.DecidableNilpotent b, Numeric.Decidable.Nilpotent.DecidableNilpotent c, Numeric.Decidable.Nilpotent.DecidableNilpotent d) => Numeric.Decidable.Nilpotent.DecidableNilpotent (a, b, c, d) instance (Numeric.Decidable.Nilpotent.DecidableNilpotent a, Numeric.Decidable.Nilpotent.DecidableNilpotent b, Numeric.Decidable.Nilpotent.DecidableNilpotent c, Numeric.Decidable.Nilpotent.DecidableNilpotent d, Numeric.Decidable.Nilpotent.DecidableNilpotent e) => Numeric.Decidable.Nilpotent.DecidableNilpotent (a, b, c, d, e) module Numeric.Exp newtype Exp r Exp :: r -> Exp r [runExp] :: Exp r -> r instance Numeric.Additive.Class.Additive r => Numeric.Algebra.Class.Multiplicative (Numeric.Exp.Exp r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Unital.Unital (Numeric.Exp.Exp r) instance Numeric.Additive.Group.Group r => Numeric.Algebra.Division.Division (Numeric.Exp.Exp r) instance Numeric.Additive.Class.Abelian r => Numeric.Algebra.Commutative.Commutative (Numeric.Exp.Exp r) instance Numeric.Additive.Class.Idempotent r => Numeric.Algebra.Idempotent.Band (Numeric.Exp.Exp r) instance Numeric.Additive.Class.Partitionable r => Numeric.Algebra.Factorable.Factorable (Numeric.Exp.Exp r) module Numeric.Log newtype Log r Log :: r -> Log r [runLog] :: Log r -> r instance Numeric.Algebra.Class.Multiplicative r => Numeric.Additive.Class.Additive (Numeric.Log.Log r) instance Numeric.Algebra.Unital.Unital r => Numeric.Algebra.Class.LeftModule GHC.Natural.Natural (Numeric.Log.Log r) instance Numeric.Algebra.Unital.Unital r => Numeric.Algebra.Class.RightModule GHC.Natural.Natural (Numeric.Log.Log r) instance Numeric.Algebra.Unital.Unital r => Numeric.Algebra.Class.Monoidal (Numeric.Log.Log r) instance Numeric.Algebra.Division.Division r => Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer (Numeric.Log.Log r) instance Numeric.Algebra.Division.Division r => Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer (Numeric.Log.Log r) instance Numeric.Algebra.Division.Division r => Numeric.Additive.Group.Group (Numeric.Log.Log r) instance Numeric.Algebra.Commutative.Commutative r => Numeric.Additive.Class.Abelian (Numeric.Log.Log r) instance Numeric.Algebra.Idempotent.Band r => Numeric.Additive.Class.Idempotent (Numeric.Log.Log r) instance Numeric.Algebra.Factorable.Factorable r => Numeric.Additive.Class.Partitionable (Numeric.Log.Log r) module Numeric.Map -- | linear maps from elements of a free module to another free module over -- r -- --
-- f $# x + y = (f $# x) + (f $# y) -- f $# (r .* x) = r .* (f $# x) ---- -- Map r b a represents a linear mapping from a free module with -- basis a over r to a free module with basis -- b over r. -- -- Note well the reversed direction of the arrow, due to the -- contravariance of change of basis! -- -- This way enables we can employ arbitrary pure functions as linear maps -- by lifting them using arr, or build them by using the monad -- instance for Map r b. As a consequence Map is an instance of, well, -- almost everything. newtype Map r b a Map :: ((a -> r) -> b -> r) -> Map r b a -- | extract a linear functional from a linear map ($@) :: Map r b a -> b -> Covector r a infixr 0 $@ multMap :: Coalgebra r c => Map r (c, c) c unitMap :: CounitalCoalgebra r c => Map r () c -- | (inefficiently) combine a linear combination of basis vectors to make -- a map. arrMap :: (Monoidal r, Semiring r) => (b -> [(r, a)]) -- -> Map r b a arrMap f = Map $ k b -> sum [ r * k a | (r, a) -- <- f b ] comultMap :: Algebra r a => Map r a (a, a) counitMap :: UnitalAlgebra r a => Map r a () invMap :: InvolutiveCoalgebra r c => Map r c c coinvMap :: InvolutiveAlgebra r a => Map r a a antipodeMap :: HopfAlgebra r h => Map r h h -- | convolution given an associative algebra and coassociative coalgebra convolveMap :: (Algebra r a, Coalgebra r c) => Map r a c -> Map r a c -> Map r a c instance Control.Category.Category (Numeric.Map.Map r) instance Data.Semigroupoid.Semigroupoid (Numeric.Map.Map r) instance GHC.Base.Functor (Numeric.Map.Map r b) instance Data.Functor.Bind.Class.Apply (Numeric.Map.Map r b) instance GHC.Base.Applicative (Numeric.Map.Map r b) instance Data.Functor.Bind.Class.Bind (Numeric.Map.Map r b) instance GHC.Base.Monad (Numeric.Map.Map r b) instance Control.Arrow.Arrow (Numeric.Map.Map r) instance Control.Arrow.ArrowApply (Numeric.Map.Map r) instance Control.Monad.Reader.Class.MonadReader b (Numeric.Map.Map r b) instance Numeric.Algebra.Class.Monoidal r => Control.Arrow.ArrowZero (Numeric.Map.Map r) instance Numeric.Algebra.Class.Monoidal r => Control.Arrow.ArrowPlus (Numeric.Map.Map r) instance Control.Arrow.ArrowChoice (Numeric.Map.Map r) instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Map.Map r b a) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.Multiplicative (Numeric.Map.Map r b m) instance Numeric.Algebra.Unital.CounitalCoalgebra r m => Numeric.Algebra.Unital.Unital (Numeric.Map.Map r b m) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.Semiring (Numeric.Map.Map r b m) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.LeftModule (Numeric.Map.Map r b m) (Numeric.Map.Map r b m) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Map.Map s b m) instance Numeric.Algebra.Class.Coalgebra r m => Numeric.Algebra.Class.RightModule (Numeric.Map.Map r b m) (Numeric.Map.Map r b m) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Map.Map s b m) instance Numeric.Additive.Class.Additive r => Data.Functor.Alt.Alt (Numeric.Map.Map r b) instance Numeric.Algebra.Class.Monoidal r => Data.Functor.Plus.Plus (Numeric.Map.Map r b) instance Numeric.Algebra.Class.Monoidal r => GHC.Base.Alternative (Numeric.Map.Map r b) instance Numeric.Algebra.Class.Monoidal r => GHC.Base.MonadPlus (Numeric.Map.Map r b) instance Numeric.Algebra.Class.Monoidal s => Numeric.Algebra.Class.Monoidal (Numeric.Map.Map s b a) instance Numeric.Additive.Class.Abelian s => Numeric.Additive.Class.Abelian (Numeric.Map.Map s b a) instance Numeric.Additive.Group.Group s => Numeric.Additive.Group.Group (Numeric.Map.Map s b a) instance (Numeric.Algebra.Commutative.Commutative m, Numeric.Algebra.Class.Coalgebra r m) => Numeric.Algebra.Commutative.Commutative (Numeric.Map.Map r b m) instance (Numeric.Rig.Class.Rig r, Numeric.Algebra.Unital.CounitalCoalgebra r m) => Numeric.Rig.Class.Rig (Numeric.Map.Map r b m) instance (Numeric.Ring.Class.Ring r, Numeric.Algebra.Unital.CounitalCoalgebra r m) => Numeric.Ring.Class.Ring (Numeric.Map.Map r a m) module Numeric.Ring.Endomorphism -- | The endomorphism ring of an abelian group or the endomorphism semiring -- of an abelian monoid -- -- http://en.wikipedia.org/wiki/Endomorphism_ring newtype End a End :: (a -> a) -> End a [appEnd] :: End a -> a -> a toEnd :: Multiplicative r => r -> End r fromEnd :: Unital r => End r -> r frobenius :: Characteristic r => End r instance GHC.Base.Monoid (Numeric.Ring.Endomorphism.End r) instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Ring.Endomorphism.End r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Ring.Endomorphism.End r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Ring.Endomorphism.End r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Ring.Endomorphism.End r) instance Numeric.Algebra.Class.Multiplicative (Numeric.Ring.Endomorphism.End r) instance Numeric.Algebra.Unital.Unital (Numeric.Ring.Endomorphism.End r) instance (Numeric.Additive.Class.Abelian r, Numeric.Algebra.Commutative.Commutative r) => Numeric.Algebra.Commutative.Commutative (Numeric.Ring.Endomorphism.End r) instance (Numeric.Additive.Class.Abelian r, Numeric.Algebra.Class.Monoidal r) => Numeric.Algebra.Class.Semiring (Numeric.Ring.Endomorphism.End r) instance (Numeric.Additive.Class.Abelian r, Numeric.Algebra.Class.Monoidal r) => Numeric.Rig.Class.Rig (Numeric.Ring.Endomorphism.End r) instance (Numeric.Additive.Class.Abelian r, Numeric.Additive.Group.Group r) => Numeric.Ring.Class.Ring (Numeric.Ring.Endomorphism.End r) instance (Numeric.Algebra.Class.Monoidal m, Numeric.Additive.Class.Abelian m) => Numeric.Algebra.Class.LeftModule (Numeric.Ring.Endomorphism.End m) (Numeric.Ring.Endomorphism.End m) instance (Numeric.Algebra.Class.Monoidal m, Numeric.Additive.Class.Abelian m) => Numeric.Algebra.Class.RightModule (Numeric.Ring.Endomorphism.End m) (Numeric.Ring.Endomorphism.End m) instance Numeric.Algebra.Class.LeftModule r m => Numeric.Algebra.Class.LeftModule r (Numeric.Ring.Endomorphism.End m) instance Numeric.Algebra.Class.RightModule r m => Numeric.Algebra.Class.RightModule r (Numeric.Ring.Endomorphism.End m) module Numeric.Ring.Opposite -- | http://en.wikipedia.org/wiki/Opposite_ring newtype Opposite r Opposite :: r -> Opposite r [runOpposite] :: Opposite r -> r instance GHC.Read.Read r => GHC.Read.Read (Numeric.Ring.Opposite.Opposite r) instance GHC.Show.Show r => GHC.Show.Show (Numeric.Ring.Opposite.Opposite r) instance GHC.Classes.Eq r => GHC.Classes.Eq (Numeric.Ring.Opposite.Opposite r) instance GHC.Classes.Ord r => GHC.Classes.Ord (Numeric.Ring.Opposite.Opposite r) instance GHC.Base.Functor Numeric.Ring.Opposite.Opposite instance Data.Foldable.Foldable Numeric.Ring.Opposite.Opposite instance Data.Traversable.Traversable Numeric.Ring.Opposite.Opposite instance Data.Semigroup.Foldable.Class.Foldable1 Numeric.Ring.Opposite.Opposite instance Data.Semigroup.Traversable.Class.Traversable1 Numeric.Ring.Opposite.Opposite instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.LeftModule (Numeric.Ring.Opposite.Opposite r) (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Class.RightModule r s => Numeric.Algebra.Class.LeftModule r (Numeric.Ring.Opposite.Opposite s) instance Numeric.Algebra.Class.LeftModule r s => Numeric.Algebra.Class.RightModule r (Numeric.Ring.Opposite.Opposite s) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.RightModule (Numeric.Ring.Opposite.Opposite r) (Numeric.Ring.Opposite.Opposite r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Ring.Opposite.Opposite r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Ring.Opposite.Opposite r) instance Numeric.Decidable.Zero.DecidableZero r => Numeric.Decidable.Zero.DecidableZero (Numeric.Ring.Opposite.Opposite r) instance Numeric.Decidable.Units.DecidableUnits r => Numeric.Decidable.Units.DecidableUnits (Numeric.Ring.Opposite.Opposite r) instance Numeric.Decidable.Associates.DecidableAssociates r => Numeric.Decidable.Associates.DecidableAssociates (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Class.Multiplicative r => Numeric.Algebra.Class.Multiplicative (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Commutative.Commutative r => Numeric.Algebra.Commutative.Commutative (Numeric.Ring.Opposite.Opposite r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Idempotent.Band r => Numeric.Algebra.Idempotent.Band (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Unital.Unital r => Numeric.Algebra.Unital.Unital (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Division.Division r => Numeric.Algebra.Division.Division (Numeric.Ring.Opposite.Opposite r) instance Numeric.Algebra.Class.Semiring r => Numeric.Algebra.Class.Semiring (Numeric.Ring.Opposite.Opposite r) instance Numeric.Rig.Class.Rig r => Numeric.Rig.Class.Rig (Numeric.Ring.Opposite.Opposite r) instance Numeric.Ring.Class.Ring r => Numeric.Ring.Class.Ring (Numeric.Ring.Opposite.Opposite r) module Numeric.Ring.Rng -- | The free Ring given a Rng obtained by adjoining Z, such that -- --
-- RngRing r = n*1 + r ---- -- This ring is commonly denoted r^. data RngRing r RngRing :: !Integer -> r -> RngRing r -- | The rng homomorphism from r to RngRing r rngRingHom :: r -> RngRing r -- | given a rng homomorphism from a rng r into a ring s, liftRngHom yields -- a ring homomorphism from the ring `r^` into s. liftRngHom :: Ring s => (r -> s) -> RngRing r -> s instance GHC.Read.Read r => GHC.Read.Read (Numeric.Ring.Rng.RngRing r) instance GHC.Show.Show r => GHC.Show.Show (Numeric.Ring.Rng.RngRing r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Additive (Numeric.Ring.Rng.RngRing r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Ring.Rng.RngRing r) instance (Numeric.Additive.Class.Abelian r, Numeric.Algebra.Class.Monoidal r) => Numeric.Algebra.Class.LeftModule GHC.Natural.Natural (Numeric.Ring.Rng.RngRing r) instance (Numeric.Additive.Class.Abelian r, Numeric.Algebra.Class.Monoidal r) => Numeric.Algebra.Class.RightModule GHC.Natural.Natural (Numeric.Ring.Rng.RngRing r) instance (Numeric.Additive.Class.Abelian r, Numeric.Algebra.Class.Monoidal r) => Numeric.Algebra.Class.Monoidal (Numeric.Ring.Rng.RngRing r) instance (Numeric.Additive.Class.Abelian r, Numeric.Additive.Group.Group r) => Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer (Numeric.Ring.Rng.RngRing r) instance (Numeric.Additive.Class.Abelian r, Numeric.Additive.Group.Group r) => Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer (Numeric.Ring.Rng.RngRing r) instance (Numeric.Additive.Class.Abelian r, Numeric.Additive.Group.Group r) => Numeric.Additive.Group.Group (Numeric.Ring.Rng.RngRing r) instance Numeric.Rng.Class.Rng r => Numeric.Algebra.Class.Multiplicative (Numeric.Ring.Rng.RngRing r) instance (Numeric.Algebra.Commutative.Commutative r, Numeric.Rng.Class.Rng r) => Numeric.Algebra.Commutative.Commutative (Numeric.Ring.Rng.RngRing r) instance Numeric.Rng.Class.Rng s => Numeric.Algebra.Class.LeftModule (Numeric.Ring.Rng.RngRing s) (Numeric.Ring.Rng.RngRing s) instance Numeric.Rng.Class.Rng s => Numeric.Algebra.Class.RightModule (Numeric.Ring.Rng.RngRing s) (Numeric.Ring.Rng.RngRing s) instance Numeric.Rng.Class.Rng r => Numeric.Algebra.Unital.Unital (Numeric.Ring.Rng.RngRing r) instance (Numeric.Rng.Class.Rng r, Numeric.Algebra.Division.Division r) => Numeric.Algebra.Division.Division (Numeric.Ring.Rng.RngRing r) instance Numeric.Rng.Class.Rng r => Numeric.Algebra.Class.Semiring (Numeric.Ring.Rng.RngRing r) instance Numeric.Rng.Class.Rng r => Numeric.Rig.Class.Rig (Numeric.Ring.Rng.RngRing r) instance Numeric.Rng.Class.Rng r => Numeric.Ring.Class.Ring (Numeric.Ring.Rng.RngRing r) module Numeric.Rng.Zero newtype ZeroRng r ZeroRng :: r -> ZeroRng r [runZeroRng] :: ZeroRng r -> r instance GHC.Read.Read r => GHC.Read.Read (Numeric.Rng.Zero.ZeroRng r) instance GHC.Show.Show r => GHC.Show.Show (Numeric.Rng.Zero.ZeroRng r) instance GHC.Classes.Ord r => GHC.Classes.Ord (Numeric.Rng.Zero.ZeroRng r) instance GHC.Classes.Eq r => GHC.Classes.Eq (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Additive.Class.Additive r => Numeric.Additive.Class.Additive (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Additive.Class.Idempotent r => Numeric.Additive.Class.Idempotent (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Additive.Class.Abelian r => Numeric.Additive.Class.Abelian (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Monoidal (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Additive.Group.Group r => Numeric.Additive.Group.Group (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.Multiplicative (Numeric.Rng.Zero.ZeroRng r) instance (Numeric.Algebra.Class.Monoidal r, Numeric.Additive.Class.Abelian r) => Numeric.Algebra.Class.Semiring (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Commutative.Commutative (Numeric.Rng.Zero.ZeroRng r) instance (Numeric.Additive.Group.Group r, Numeric.Additive.Class.Abelian r) => Numeric.Rng.Class.Rng (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.LeftModule GHC.Natural.Natural (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Algebra.Class.Monoidal r => Numeric.Algebra.Class.RightModule GHC.Natural.Natural (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Additive.Group.Group r => Numeric.Algebra.Class.LeftModule GHC.Integer.Type.Integer (Numeric.Rng.Zero.ZeroRng r) instance Numeric.Additive.Group.Group r => Numeric.Algebra.Class.RightModule GHC.Integer.Type.Integer (Numeric.Rng.Zero.ZeroRng r)