algebra-4.3: Constructive abstract algebra

Numeric.Algebra.Dual

Synopsis

Documentation

class Distinguished t where Source #

Minimal complete definition

e

Methods

e :: t Source #

Instances

 Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Rig r => Distinguished (Complex r) Source # Methods Rig r => Distinguished (Dual r) Source # Methodse :: Dual r Source # Rig r => Distinguished (Quaternion r) Source # Methods Rig r => Distinguished (Dual' r) Source # Methods Rig r => Distinguished (Quaternion' r) Source # Methods Rig r => Distinguished (Trig r) Source # Methodse :: Trig r Source # Rig r => Distinguished (ComplexBasis -> r) Source # Methodse :: ComplexBasis -> r Source # Rig r => Distinguished (DualBasis -> r) Source # Methodse :: DualBasis -> r Source # Rig r => Distinguished (QuaternionBasis -> r) Source # Methodse :: QuaternionBasis -> r Source # Rig r => Distinguished (DualBasis' -> r) Source # Methodse :: DualBasis' -> r Source # Rig r => Distinguished (QuaternionBasis' -> r) Source # Methodse :: QuaternionBasis' -> r Source # Rig r => Distinguished (TrigBasis -> r) Source # Methodse :: TrigBasis -> r Source # Distinguished a => Distinguished (Covector r a) Source # Methodse :: Covector r a Source #

class Distinguished t => Infinitesimal t where Source #

Minimal complete definition

d

Methods

d :: t Source #

Instances

 Source # Methods Source # Methods Rig r => Infinitesimal (Dual r) Source # Methodsd :: Dual r Source # Rig r => Infinitesimal (Dual' r) Source # Methods Rig r => Infinitesimal (DualBasis -> r) Source # Methodsd :: DualBasis -> r Source # Rig r => Infinitesimal (DualBasis' -> r) Source # Methodsd :: DualBasis' -> r Source # Infinitesimal a => Infinitesimal (Covector r a) Source # Methodsd :: Covector r a Source #

data DualBasis Source #

dual number basis, D^2 = 0. D /= 0.

Constructors

 E D

Instances

 Source # Methods Source # MethodsenumFrom :: DualBasis -> [DualBasis] # Source # Methods Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DualBasis -> c DualBasis #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DualBasis #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c DualBasis) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DualBasis) #gmapT :: (forall b. Data b => b -> b) -> DualBasis -> DualBasis #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DualBasis -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DualBasis -> r #gmapQ :: (forall d. Data d => d -> u) -> DualBasis -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> DualBasis -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> DualBasis -> m DualBasis #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DualBasis -> m DualBasis #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DualBasis -> m DualBasis # Source # Methods Source # Methods Source # MethodsshowList :: [DualBasis] -> ShowS # Source # Methodsrange :: (DualBasis, DualBasis) -> [DualBasis] #index :: (DualBasis, DualBasis) -> DualBasis -> Int #unsafeIndex :: (DualBasis, DualBasis) -> DualBasis -> IntinRange :: (DualBasis, DualBasis) -> DualBasis -> Bool #rangeSize :: (DualBasis, DualBasis) -> Int #unsafeRangeSize :: (DualBasis, DualBasis) -> Int Source # Methods Source # Methods Source # Methodslocal :: (DualBasis -> DualBasis) -> Dual a -> Dual a #reader :: (DualBasis -> a) -> Dual a # Source # Methodscomult :: (DualBasis -> k) -> DualBasis -> DualBasis -> k Source # Rng k => Algebra k DualBasis Source # Methodsmult :: (DualBasis -> DualBasis -> k) -> DualBasis -> k Source # Source # Source # Methodscounit :: (DualBasis -> k) -> k Source # Source # Methodsunit :: k -> DualBasis -> k Source # Source # Methodsantipode :: (DualBasis -> k) -> DualBasis -> k Source # Source # Methodscoinv :: (DualBasis -> k) -> DualBasis -> k Source # Source # Methodsinv :: (DualBasis -> k) -> DualBasis -> k Source # Rig r => Distinguished (DualBasis -> r) Source # Methodse :: DualBasis -> r Source # Rig r => Infinitesimal (DualBasis -> r) Source # Methodsd :: DualBasis -> r Source #

data Dual a Source #

Constructors

 Dual a a

Instances

 Source # Methods(>>=) :: Dual a -> (a -> Dual b) -> Dual b #(>>) :: Dual a -> Dual b -> Dual b #return :: a -> Dual a #fail :: String -> Dual a # Source # Methodsfmap :: (a -> b) -> Dual a -> Dual b #(<\$) :: a -> Dual b -> Dual a # Source # Methodspure :: a -> Dual a #(<*>) :: Dual (a -> b) -> Dual a -> Dual b #(*>) :: Dual a -> Dual b -> Dual b #(<*) :: Dual a -> Dual b -> Dual a # Source # Methodsfold :: Monoid m => Dual m -> m #foldMap :: Monoid m => (a -> m) -> Dual a -> m #foldr :: (a -> b -> b) -> b -> Dual a -> b #foldr' :: (a -> b -> b) -> b -> Dual a -> b #foldl :: (b -> a -> b) -> b -> Dual a -> b #foldl' :: (b -> a -> b) -> b -> Dual a -> b #foldr1 :: (a -> a -> a) -> Dual a -> a #foldl1 :: (a -> a -> a) -> Dual a -> a #toList :: Dual a -> [a] #null :: Dual a -> Bool #length :: Dual a -> Int #elem :: Eq a => a -> Dual a -> Bool #maximum :: Ord a => Dual a -> a #minimum :: Ord a => Dual a -> a #sum :: Num a => Dual a -> a #product :: Num a => Dual a -> a # Source # Methodstraverse :: Applicative f => (a -> f b) -> Dual a -> f (Dual b) #sequenceA :: Applicative f => Dual (f a) -> f (Dual a) #mapM :: Monad m => (a -> m b) -> Dual a -> m (Dual b) #sequence :: Monad m => Dual (m a) -> m (Dual a) # Source # Methodsdistribute :: Functor f => f (Dual a) -> Dual (f a) #collect :: Functor f => (a -> Dual b) -> f a -> Dual (f b) #distributeM :: Monad m => m (Dual a) -> Dual (m a) #collectM :: Monad m => (a -> Dual b) -> m a -> Dual (m b) # Source # Associated Typestype Rep (Dual :: * -> *) :: * # Methodstabulate :: (Rep Dual -> a) -> Dual a #index :: Dual a -> Rep Dual -> a # Source # Methodstraverse1 :: Apply f => (a -> f b) -> Dual a -> f (Dual b) #sequence1 :: Apply f => Dual (f b) -> f (Dual b) # Source # Methods(<.>) :: Dual (a -> b) -> Dual a -> Dual b #(.>) :: Dual a -> Dual b -> Dual b #(<.) :: Dual a -> Dual b -> Dual a # Source # Methods(>>-) :: Dual a -> (a -> Dual b) -> Dual b #join :: Dual (Dual a) -> Dual a # Source # Methodsfold1 :: Semigroup m => Dual m -> m #foldMap1 :: Semigroup m => (a -> m) -> Dual a -> m # Source # Methodslocal :: (DualBasis -> DualBasis) -> Dual a -> Dual a #reader :: (DualBasis -> a) -> Dual a # RightModule r s => RightModule r (Dual s) Source # Methods(*.) :: Dual s -> r -> Dual s Source # LeftModule r s => LeftModule r (Dual s) Source # Methods(.*) :: r -> Dual s -> Dual s Source # (Commutative r, Rng r, InvolutiveSemiring r) => Quadrance r (Dual r) Source # Methodsquadrance :: Dual r -> r Source # Eq a => Eq (Dual a) Source # Methods(==) :: Dual a -> Dual a -> Bool #(/=) :: Dual a -> Dual a -> Bool # Data a => Data (Dual a) Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Dual a -> c (Dual a) #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Dual a) #toConstr :: Dual a -> Constr #dataTypeOf :: Dual a -> DataType #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Dual a)) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Dual a)) #gmapT :: (forall b. Data b => b -> b) -> Dual a -> Dual a #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r #gmapQ :: (forall d. Data d => d -> u) -> Dual a -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Dual a -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) # Read a => Read (Dual a) Source # MethodsreadsPrec :: Int -> ReadS (Dual a) #readList :: ReadS [Dual a] # Show a => Show (Dual a) Source # MethodsshowsPrec :: Int -> Dual a -> ShowS #show :: Dual a -> String #showList :: [Dual a] -> ShowS # Idempotent r => Idempotent (Dual r) Source # Abelian r => Abelian (Dual r) Source # Source # MethodspartitionWith :: (Dual r -> Dual r -> r) -> Dual r -> NonEmpty r Source # Additive r => Additive (Dual r) Source # Methods(+) :: Dual r -> Dual r -> Dual r Source #sinnum1p :: Natural -> Dual r -> Dual r Source #sumWith1 :: Foldable1 f => (a -> Dual r) -> f a -> Dual r Source # Monoidal r => Monoidal (Dual r) Source # Methodssinnum :: Natural -> Dual r -> Dual r Source #sumWith :: Foldable f => (a -> Dual r) -> f a -> Dual r Source # (Commutative r, Rng r) => Semiring (Dual r) Source # (Commutative r, Rng r) => Multiplicative (Dual r) Source # Methods(*) :: Dual r -> Dual r -> Dual r Source #pow1p :: Dual r -> Natural -> Dual r Source #productWith1 :: Foldable1 f => (a -> Dual r) -> f a -> Dual r Source # Group r => Group (Dual r) Source # Methods(-) :: Dual r -> Dual r -> Dual r Source #negate :: Dual r -> Dual r Source #subtract :: Dual r -> Dual r -> Dual r Source #times :: Integral n => n -> Dual r -> Dual r Source # (Commutative r, Ring r) => Unital (Dual r) Source # Methodspow :: Dual r -> Natural -> Dual r Source #productWith :: Foldable f => (a -> Dual r) -> f a -> Dual r Source # Source # Methodsrecip :: Dual r -> Dual r Source #(/) :: Dual r -> Dual r -> Dual r Source #(\\) :: Dual r -> Dual r -> Dual r Source #(^) :: Integral n => Dual r -> n -> Dual r Source # (Commutative r, Ring r) => Rig (Dual r) Source # Methods (Commutative r, Ring r) => Ring (Dual r) Source # Methods (TriviallyInvolutive r, Rng r) => Commutative (Dual r) Source # Source # Source # Methodsadjoint :: Dual r -> Dual r Source # Rig r => Distinguished (Dual r) Source # Methodse :: Dual r Source # Rig r => Infinitesimal (Dual r) Source # Methodsd :: Dual r Source # (Commutative r, Rng r) => RightModule (Dual r) (Dual r) Source # Methods(*.) :: Dual r -> Dual r -> Dual r Source # (Commutative r, Rng r) => LeftModule (Dual r) (Dual r) Source # Methods(.*) :: Dual r -> Dual r -> Dual r Source # type Rep Dual Source # type Rep Dual = DualBasis