clifford-0.1.0.4: A Clifford algebra library

Safe HaskellNone

Numeric.Clifford.Multivector

Synopsis

Documentation

data Multivector p q f whereSource

Constructors

BladeSum :: forall p q f. (Ord f, C f, SingI p, SingI q) => [Blade p q f] -> Multivector p q f 

Fields

_terms :: [Blade p q f]
 

Instances

(C f, Ord f, SingI Nat p, SingI Nat q) => C f (Multivector p q f) 
(C f, Ord f, SingI Nat p, SingI Nat q) => C f (Multivector p q f) 
(C f, SingI Nat p, SingI Nat q, Ord f) => Monoid (Sum (Multivector p q f)) 
(C f, SingI Nat p, SingI Nat q, Ord f) => Monoid (Product (Multivector p q f)) 
Eq (Multivector p q f) 
(C f, SingI Nat p, SingI Nat q, Ord f) => Num (Multivector p q f) 
Ord (Multivector p q f) 
Show f => Show (Multivector p q f) 
NFData f => NFData (Multivector p q f) 
(C f, C f, Ord f, SingI Nat p, SingI Nat q) => C (Multivector p q f) 
(C f, Ord f, SingI Nat p, SingI Nat q) => C (Multivector p q f) 
(C f, Ord f, SingI Nat p, SingI Nat q) => C (Multivector p q f) 

dimension :: forall p q f. (SingI p, SingI q) => Multivector p q f -> (Natural, Natural)Source

terms :: Lens' (Multivector p q f) [Blade p q f]Source

mvTerms :: Multivector p q f -> [Blade p q f]Source

addLikeTerms' :: (Eq f, SingI Nat p, SingI Nat q, C f) => [Blade p q f] -> [Blade p q f]Source

groupLikeTerms :: Eq f => [Blade p q f] -> [[Blade p q f]]Source

compensatedSum' :: C f => [f] -> fSource

compensatedRunningSum :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => [Multivector p q f] -> [Multivector p q f]Source

multiplyOutBlades :: (SingI p, SingI q, C a) => [Blade p q a] -> [Blade p q a] -> [Blade p q a]Source

multiplyList :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => [Multivector t t1 t2] -> Multivector t t1 t2Source

sumList :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => [Multivector t t1 t2] -> Multivector t t1 t2Source

sumLikeTerms :: (C f, SingI p, SingI q) => [[Blade p q f]] -> [Blade p q f]Source

e :: (C f, Ord f, SingI p, SingI q) => f -> [Natural] -> Multivector p q fSource

scalar :: (Ord f, SingI Nat p, SingI Nat q, C f) => f -> Multivector p q fSource

two :: C a => aSource

mul :: C a => a -> a -> aSource

psuedoScalar :: forall p q f. (Ord f, C f, SingI p, SingI q, SingI (p + q)) => Multivector p q fSource

magnitude :: C c => Multivector p q c -> cSource

(/) :: (C f, Ord f, SingI p, SingI q) => Multivector p q f -> f -> Multivector p q fSource

(</) :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q f -> Multivector p q fSource

(/>) :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q f -> Multivector p q fSource

(</>) :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q f -> Multivector p q fSource

integratePoly :: (Ord b, SingI Nat p, SingI Nat q, C b) => Multivector p q b -> [Multivector p q b] -> [Multivector p q b]Source

converge :: (Eq a, Show a) => [a] -> aSource

aitkensAcceleration :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => [Multivector t t1 t2] -> [Multivector t t1 t2]Source

shanksTransformation :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => [Multivector p q f] -> [Multivector p q f]Source

exp :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

takeEvery :: Int -> [a] -> [a]Source

cosh :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

sinh :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

seriesPlusMinus :: C a => [a] -> [a]Source

seriesMinusPlus :: C a => [a] -> [a]Source

sin :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

sinTerms :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> [Multivector p q f]Source

cos :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

cosTerms :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> [Multivector p q f]Source

expTerms :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> [Multivector p q f]Source

dot :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => Multivector t t1 t2 -> Multivector t t1 t2 -> Multivector t t1 t2Source

wedge :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => Multivector t t1 t2 -> Multivector t t1 t2 -> Multivector t t1 t2Source

(∧) :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => Multivector t t1 t2 -> Multivector t t1 t2 -> Multivector t t1 t2Source

(⋅) :: (Ord t2, SingI Nat t, SingI Nat t1, C t2) => Multivector t t1 t2 -> Multivector t t1 t2 -> Multivector t t1 t2Source

reverseBlade :: Blade p q f -> Blade p q fSource

inverse :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

recip :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

root :: (Show f, Ord f, C f, SingI p, SingI q) => Integer -> Multivector p q f -> Multivector p q fSource

rootIterationsStart :: (Ord f, Show f, C f) => Integer -> Multivector p q f -> Multivector p q f -> [Multivector p q f]Source

rootNewtonIterations :: (C f, Ord f, SingI p, SingI q) => Integer -> Multivector p q f -> Multivector p q f -> [Multivector p q f]Source

rootHalleysIterations :: (Show a, Ord a, C a, SingI p, SingI q) => Integer -> Multivector p q a -> Multivector p q a -> [Multivector p q a]Source

pow :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f, C a) => Multivector p q f -> a -> Multivector p q fSource

halleysMethod :: (Show a, Ord a, C a, SingI p, SingI q) => (Multivector p q a -> Multivector p q a) -> (Multivector p q a -> Multivector p q a) -> (Multivector p q a -> Multivector p q a) -> Multivector p q a -> [Multivector p q a]Source

secantMethod :: (Ord f, SingI Nat p, SingI Nat q, C f) => (Multivector p q f -> Multivector p q f) -> Multivector p q f -> Multivector p q f -> [Multivector p q f]Source

normalised :: (Ord f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

log :: (Ord f, Show f, SingI Nat p, SingI Nat q, C f) => Multivector p q f -> Multivector p q fSource

makeSerialize ''Blade) $(derive makeSerialize ''Multivector) $(derive makeData ''Blade) $(derive makeTypeable ''Blade) $(derive makeData ''Multivector) $(derive makeTypeable ''Multivector)

makeArbitrary ''Multivector)