packages feed

vector-space 0.5.7 → 0.5.9

raw patch · 2 files changed

+24/−11 lines, 2 filesdep +BooleanPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: Boolean

API changes (from Hackage documentation)

- Data.AdditiveGroup: instance (AdditiveGroup a) => AdditiveGroup (Maybe a)
- Data.AdditiveGroup: instance (AdditiveGroup a) => AdditiveGroup (Sum a)
- Data.AdditiveGroup: instance (AdditiveGroup a) => Monoid (Sum a)
- Data.AdditiveGroup: instance (AdditiveGroup v) => AdditiveGroup (a -> v)
- Data.AdditiveGroup: instance (Bounded a) => Bounded (Sum a)
- Data.AdditiveGroup: instance (Eq a) => Eq (Sum a)
- Data.AdditiveGroup: instance (Ord a) => Ord (Sum a)
- Data.AdditiveGroup: instance (Read a) => Read (Sum a)
- Data.AdditiveGroup: instance (Show a) => Show (Sum a)
- Data.AffineSpace: instance (AffineSpace p) => AffineSpace (a -> p)
- Data.Cross: instance (AdditiveGroup u) => HasCross2 (u, u)
- Data.Cross: instance (Num s) => HasCross3 (s, s, s)
- Data.Maclaurin: instance (Eq b) => Eq (a :> b)
- Data.Maclaurin: instance (Ord b) => Ord (a :> b)
- Data.Maclaurin: instance (Show b) => Show (a :> b)
- Data.NumInstances: instance (Floating b) => Floating (a -> b)
- Data.NumInstances: instance (Fractional b) => Fractional (a -> b)
- Data.NumInstances: instance (Num b) => Num (a -> b)
- Data.NumInstances: instance (Ord b) => Ord (a -> b)
- Data.VectorSpace: instance (InnerSpace v) => InnerSpace (a -> v)
- Data.VectorSpace: instance (VectorSpace v) => VectorSpace (Maybe v)
- Data.VectorSpace: instance (VectorSpace v) => VectorSpace (a -> v)
+ Data.AdditiveGroup: instance AdditiveGroup a => AdditiveGroup (Maybe a)
+ Data.AdditiveGroup: instance AdditiveGroup a => AdditiveGroup (Sum a)
+ Data.AdditiveGroup: instance AdditiveGroup a => Monoid (Sum a)
+ Data.AdditiveGroup: instance AdditiveGroup v => AdditiveGroup (a -> v)
+ Data.AdditiveGroup: instance Bounded a => Bounded (Sum a)
+ Data.AdditiveGroup: instance Eq a => Eq (Sum a)
+ Data.AdditiveGroup: instance Ord a => Ord (Sum a)
+ Data.AdditiveGroup: instance Read a => Read (Sum a)
+ Data.AdditiveGroup: instance Show a => Show (Sum a)
+ Data.AffineSpace: instance AffineSpace p => AffineSpace (a -> p)
+ Data.Cross: instance AdditiveGroup u => HasCross2 (u, u)
+ Data.Cross: instance Num s => HasCross3 (s, s, s)
+ Data.Maclaurin: instance (AdditiveGroup b, HasBasis a, HasTrie (Basis a), OrdB bool b, IfB bool b, Ord b) => Ord (a :> b)
+ Data.Maclaurin: instance (AdditiveGroup v, HasBasis u, HasTrie (Basis u), IfB b v) => IfB b (u :> v)
+ Data.Maclaurin: instance (AdditiveGroup v, HasBasis u, HasTrie (Basis u), OrdB b v) => OrdB b (u :> v)
+ Data.Maclaurin: instance Eq b => Eq (a :> b)
+ Data.Maclaurin: instance Show b => Show (a :> b)
+ Data.NumInstances: instance Floating b => Floating (a -> b)
+ Data.NumInstances: instance Fractional b => Fractional (a -> b)
+ Data.NumInstances: instance Num b => Num (a -> b)
+ Data.NumInstances: instance Ord b => Ord (a -> b)
+ Data.VectorSpace: instance InnerSpace v => InnerSpace (a -> v)
+ Data.VectorSpace: instance VectorSpace v => VectorSpace (Maybe v)
+ Data.VectorSpace: instance VectorSpace v => VectorSpace (a -> v)
- Data.AdditiveGroup: (^+^) :: (AdditiveGroup v) => v -> v -> v
+ Data.AdditiveGroup: (^+^) :: AdditiveGroup v => v -> v -> v
- Data.AdditiveGroup: (^-^) :: (AdditiveGroup v) => v -> v -> v
+ Data.AdditiveGroup: (^-^) :: AdditiveGroup v => v -> v -> v
- Data.AdditiveGroup: negateV :: (AdditiveGroup v) => v -> v
+ Data.AdditiveGroup: negateV :: AdditiveGroup v => v -> v
- Data.AdditiveGroup: sumV :: (AdditiveGroup v) => [v] -> v
+ Data.AdditiveGroup: sumV :: AdditiveGroup v => [v] -> v
- Data.AdditiveGroup: zeroV :: (AdditiveGroup v) => v
+ Data.AdditiveGroup: zeroV :: AdditiveGroup v => v
- Data.AffineSpace: (.+^) :: (AffineSpace p) => p -> Diff p -> p
+ Data.AffineSpace: (.+^) :: AffineSpace p => p -> Diff p -> p
- Data.AffineSpace: (.-.) :: (AffineSpace p) => p -> p -> Diff p
+ Data.AffineSpace: (.-.) :: AffineSpace p => p -> p -> Diff p
- Data.AffineSpace: (.-^) :: (AffineSpace p) => p -> Diff p -> p
+ Data.AffineSpace: (.-^) :: AffineSpace p => p -> Diff p -> p
- Data.AffineSpace: class (AdditiveGroup (Diff p)) => AffineSpace p where { type family Diff p; }
+ Data.AffineSpace: class AdditiveGroup (Diff p) => AffineSpace p where { type family Diff p; }
- Data.Basis: basisValue :: (HasBasis v) => Basis v -> v
+ Data.Basis: basisValue :: HasBasis v => Basis v -> v
- Data.Basis: class (VectorSpace v) => HasBasis v where { type family Basis v :: *; }
+ Data.Basis: class VectorSpace v => HasBasis v where { type family Basis v :: *; }
- Data.Basis: decompose :: (HasBasis v) => v -> [(Basis v, Scalar v)]
+ Data.Basis: decompose :: HasBasis v => v -> [(Basis v, Scalar v)]
- Data.Basis: decompose' :: (HasBasis v) => v -> (Basis v -> Scalar v)
+ Data.Basis: decompose' :: HasBasis v => v -> (Basis v -> Scalar v)
- Data.Basis: linearCombo :: (VectorSpace v) => [(v, Scalar v)] -> v
+ Data.Basis: linearCombo :: VectorSpace v => [(v, Scalar v)] -> v
- Data.Basis: recompose :: (HasBasis v) => [(Basis v, Scalar v)] -> v
+ Data.Basis: recompose :: HasBasis v => [(Basis v, Scalar v)] -> v
- Data.Cross: cross2 :: (HasCross2 v) => v -> v
+ Data.Cross: cross2 :: HasCross2 v => v -> v
- Data.Cross: cross3 :: (HasCross3 v) => v -> v -> v
+ Data.Cross: cross3 :: HasCross3 v => v -> v -> v
- Data.Cross: normalVec :: (HasNormal v) => v -> v
+ Data.Cross: normalVec :: HasNormal v => v -> v
- Data.LinearMap: liftMS :: (AdditiveGroup a) => (a -> b) -> (MSum a -> MSum b)
+ Data.LinearMap: liftMS :: AdditiveGroup a => (a -> b) -> (MSum a -> MSum b)
- Data.VectorSpace: (*^) :: (VectorSpace v) => Scalar v -> v -> v
+ Data.VectorSpace: (*^) :: VectorSpace v => Scalar v -> v -> v
- Data.VectorSpace: (<.>) :: (InnerSpace v) => v -> v -> Scalar v
+ Data.VectorSpace: (<.>) :: InnerSpace v => v -> v -> Scalar v
- Data.VectorSpace: class (VectorSpace v) => InnerSpace v
+ Data.VectorSpace: class VectorSpace v => InnerSpace v
- Data.VectorSpace: class (AdditiveGroup v) => VectorSpace v where { type family Scalar v :: *; }
+ Data.VectorSpace: class AdditiveGroup v => VectorSpace v where { type family Scalar v :: *; }
- Data.VectorSpace: lerp :: (VectorSpace v) => v -> v -> Scalar v -> v
+ Data.VectorSpace: lerp :: VectorSpace v => v -> v -> Scalar v -> v

Files

src/Data/Maclaurin.hs view
@@ -42,6 +42,8 @@   )      where +-- import Control.Applicative (liftA2)+import Data.Function (on)  import Data.VectorSpace import Data.NumInstances ()@@ -49,6 +51,7 @@ import Data.Basis import Data.LinearMap +import Data.Boolean  infixr 9 `D` -- | Tower of derivatives.@@ -61,17 +64,11 @@ noOv :: String -> a noOv op = error (op ++ ": not defined on a :> b") --- -- | Derivative tower full of 'zeroV'.--- dZero :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => a:>b--- dZero = pureD zeroV- -- | Constant derivative tower. pureD :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => b -> a:>b pureD b = b `D` zeroV --- pureD b = b `D` pure dZero - infixl 4 <$>> -- | Map a /linear/ function over a derivative tower. fmapD, (<$>>) :: (HasBasis a, HasTrie (Basis a), AdditiveGroup b) =>@@ -191,10 +188,26 @@   show (D b0 _) = "D " ++ show b0  ++ " ..."  instance Eq   b => Eq   (a :> b) where (==)    = noOv "(==)"-instance Ord  b => Ord  (a :> b) where compare = noOv "compare" +instance (AdditiveGroup v, HasBasis u, HasTrie (Basis u), IfB b v) =>+      IfB b (u :> v) where+  ifB = liftD2 . ifB++instance (AdditiveGroup v, HasBasis u, HasTrie (Basis u), OrdB b v) =>+         OrdB b (u :> v) where+  (<*) = (<*) `on` powVal++instance ( AdditiveGroup b, HasBasis a, HasTrie (Basis a)+         , OrdB bool b, IfB bool b, Ord  b) => Ord  (a :> b) where+  compare = compare `on` powVal+  min     = minB+  max     = maxB++-- minB & maxB use ifB, and so can work even if b is an expression type,+-- as in deep DSELs.+ instance (HasBasis a, HasTrie (Basis a), AdditiveGroup u) => AdditiveGroup (a :> u) where-  zeroV   = pureD  zeroV    -- or dZero+  zeroV   = pureD  zeroV   negateV = fmapD  negateV   D a0 a' ^+^ D b0 b' = D (a0 ^+^ b0) (a' ^+^ b')   -- Less efficient: adds zero@@ -247,7 +260,7 @@          , Fractional s, VectorSpace s, Scalar s ~ s)          => Fractional (a:>s) where   fromRational = pureD . fromRational-  recip        = recip >-< recip sqr+  recip        = recip >-< - recip sqr  sqr :: Num a => a -> a sqr x = x*x
vector-space.cabal view
@@ -1,5 +1,5 @@ Name:                vector-space-Version:             0.5.7+Version:             0.5.9 Cabal-Version:       >= 1.2 Synopsis:            Vector & affine spaces, linear maps, and derivatives (requires ghc 6.9 or better) Category:            math@@ -28,7 +28,7 @@ Library   hs-Source-Dirs:      src   Extensions:          -  Build-Depends:       base, MemoTrie >= 0.4.2+  Build-Depends:       base, MemoTrie >= 0.4.2, Boolean   Exposed-Modules:                           Data.AdditiveGroup                      Data.VectorSpace