packages feed

ad 1.2.0.2 → 1.3

raw patch · 6 files changed

+36/−41 lines, 6 filesdep ~template-haskellPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: template-haskell

API changes (from Hackage documentation)

- Numeric.AD.Internal.Classes: (*!) :: (Lifted t, Num a) => t a -> t a -> t a
- Numeric.AD.Internal.Classes: (**!) :: (Lifted t, Floating a) => t a -> t a -> t a
- Numeric.AD.Internal.Classes: (+!) :: (Lifted t, Num a) => t a -> t a -> t a
- Numeric.AD.Internal.Classes: (-!) :: (Lifted t, Num a) => t a -> t a -> t a
- Numeric.AD.Internal.Classes: abs1 :: (Lifted t, Num a) => t a -> t a
- Numeric.AD.Internal.Classes: acos1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: acosh1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: asin1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: asinh1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: atan1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: atanh1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: ceiling1 :: (Lifted t, RealFrac a, Integral b) => t a -> b
- Numeric.AD.Internal.Classes: cos1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: cosh1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: exp1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: floor1 :: (Lifted t, RealFrac a, Integral b) => t a -> b
- Numeric.AD.Internal.Classes: isDenormalized1 :: (Lifted t, RealFloat a) => t a -> Bool
- Numeric.AD.Internal.Classes: isIEEE1 :: (Lifted t, RealFloat a) => t a -> Bool
- Numeric.AD.Internal.Classes: isInfinite1 :: (Lifted t, RealFloat a) => t a -> Bool
- Numeric.AD.Internal.Classes: isNaN1 :: (Lifted t, RealFloat a) => t a -> Bool
- Numeric.AD.Internal.Classes: isNegativeZero1 :: (Lifted t, RealFloat a) => t a -> Bool
- Numeric.AD.Internal.Classes: log1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: logBase1 :: (Lifted t, Floating a) => t a -> t a -> t a
- Numeric.AD.Internal.Classes: negate1 :: (Lifted t, Num a) => t a -> t a
- Numeric.AD.Internal.Classes: pred1 :: (Lifted t, Num a, Enum a) => t a -> t a
- Numeric.AD.Internal.Classes: round1 :: (Lifted t, RealFrac a, Integral b) => t a -> b
- Numeric.AD.Internal.Classes: signum1 :: (Lifted t, Num a) => t a -> t a
- Numeric.AD.Internal.Classes: sin1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: sinh1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: sqrt1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: succ1 :: (Lifted t, Num a, Enum a) => t a -> t a
- Numeric.AD.Internal.Classes: tan1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: tanh1 :: (Lifted t, Floating a) => t a -> t a
- Numeric.AD.Internal.Classes: truncate1 :: (Lifted t, RealFrac a, Integral b) => t a -> b
+ Numeric.AD.Internal.Classes: (**!, logBase1) :: (Lifted t, Floating a) => t a -> t a -> t a
+ Numeric.AD.Internal.Classes: (+!, *!, -!) :: (Lifted t, Num a) => t a -> t a -> t a
+ Numeric.AD.Internal.Classes: exp1, sqrt1, log1 :: (Lifted t, Floating a) => t a -> t a
+ Numeric.AD.Internal.Classes: isNaN1, isIEEE1, isNegativeZero1, isDenormalized1, isInfinite1 :: (Lifted t, RealFloat a) => t a -> Bool
+ Numeric.AD.Internal.Classes: negate1, signum1, abs1 :: (Lifted t, Num a) => t a -> t a
+ Numeric.AD.Internal.Classes: sin1, atan1, acos1, asin1, tan1, cos1 :: (Lifted t, Floating a) => t a -> t a
+ Numeric.AD.Internal.Classes: sinh1, atanh1, acosh1, asinh1, tanh1, cosh1 :: (Lifted t, Floating a) => t a -> t a
+ Numeric.AD.Internal.Classes: succ1, pred1 :: (Lifted t, Num a, Enum a) => t a -> t a
+ Numeric.AD.Internal.Classes: truncate1, floor1, ceiling1, round1 :: (Lifted t, RealFrac a, Integral b) => t a -> b
- Numeric.AD.Halley: extremum :: Fractional a => UU a -> a -> [a]
+ Numeric.AD.Halley: extremum :: (Fractional a, Eq a) => UU a -> a -> [a]
- Numeric.AD.Halley: findZero :: Fractional a => UU a -> a -> [a]
+ Numeric.AD.Halley: findZero :: (Fractional a, Eq a) => UU a -> a -> [a]
- Numeric.AD.Halley: fixedPoint :: Fractional a => UU a -> a -> [a]
+ Numeric.AD.Halley: fixedPoint :: (Fractional a, Eq a) => UU a -> a -> [a]
- Numeric.AD.Halley: inverse :: Fractional a => UU a -> a -> a -> [a]
+ Numeric.AD.Halley: inverse :: (Fractional a, Eq a) => UU a -> a -> a -> [a]
- Numeric.AD.Internal.Classes: showsPrec1 :: (Lifted t, Num a) => Int -> t a -> ShowS
+ Numeric.AD.Internal.Classes: showsPrec1 :: (Lifted t, Num a, Show a) => Int -> t a -> ShowS
- Numeric.AD.Newton: extremum :: Fractional a => UU a -> a -> [a]
+ Numeric.AD.Newton: extremum :: (Fractional a, Eq a) => UU a -> a -> [a]
- Numeric.AD.Newton: findZero :: Fractional a => UU a -> a -> [a]
+ Numeric.AD.Newton: findZero :: (Fractional a, Eq a) => UU a -> a -> [a]
- Numeric.AD.Newton: fixedPoint :: Fractional a => UU a -> a -> [a]
+ Numeric.AD.Newton: fixedPoint :: (Fractional a, Eq a) => UU a -> a -> [a]
- Numeric.AD.Newton: inverse :: Fractional a => UU a -> a -> a -> [a]
+ Numeric.AD.Newton: inverse :: (Fractional a, Eq a) => UU a -> a -> a -> [a]

Files

Numeric/AD/Halley.hs view
@@ -49,7 +49,7 @@ --  > module Data.Complex --  > take 10 $ findZero ((+1).(^2)) (1 :+ 1)  -- converge to (0 :+ 1)@ ---findZero :: Fractional a => UU a -> a -> [a]+findZero :: (Fractional a, Eq a) => UU a -> a -> [a] findZero f = go     where         go x = x : if y == 0 then [] else go (x - 2*y*y'/(2*y'*y'-y*y''))@@ -64,7 +64,7 @@ -- Note: the @take 10 $ inverse sqrt 1 (sqrt 10)@ example that works for Newton's method -- fails with Halley's method because the preconditions do not hold. -inverse :: Fractional a => UU a -> a -> a -> [a]+inverse :: (Fractional a, Eq a) => UU a -> a -> a -> [a] inverse f x0 y = findZero (\x -> f x - lift y) x0 {-# INLINE inverse  #-} @@ -73,7 +73,7 @@ -- increasingly accurate results.  (Modulo the usual caveats.) --  -- > take 10 $ fixedPoint cos 1 -- converges to 0.7390851332151607-fixedPoint :: Fractional a => UU a -> a -> [a]+fixedPoint :: (Fractional a, Eq a) => UU a -> a -> [a] fixedPoint f = findZero (\x -> f x - x) {-# INLINE fixedPoint #-} @@ -82,7 +82,7 @@ -- accurate results.  (Modulo the usual caveats.) -- -- > take 10 $ extremum cos 1 -- convert to 0 -extremum :: Fractional a => UU a -> a -> [a]+extremum :: (Fractional a, Eq a) => UU a -> a -> [a] extremum f = findZero (diff (decomposeMode . f . composeMode)) {-# INLINE extremum #-} 
Numeric/AD/Internal/Classes.hs view
@@ -44,7 +44,7 @@     osi = id  class Lifted t where-    showsPrec1          :: Num a => Int -> t a -> ShowS+    showsPrec1          :: (Num a, Show a) => Int -> t a -> ShowS     (==!)               :: (Num a, Eq a) => t a -> t a -> Bool     compare1            :: (Num a, Ord a) => t a -> t a -> Ordering     fromInteger1        :: Num a => Integer -> t a
Numeric/AD/Internal/Composition.hs view
@@ -20,7 +20,7 @@  import Control.Applicative import Data.Data (Data(..), mkDataType, DataType, mkConstr, Constr, constrIndex, Fixity(..))-import Data.Typeable (Typeable1(..), Typeable(..), TyCon, mkTyCon, mkTyConApp, typeOfDefault, gcast1)+import Data.Typeable (Typeable1(..), Typeable(..), TyCon, mkTyCon3, mkTyConApp, typeOfDefault, gcast1) import Data.Foldable (Foldable(foldMap)) import Data.Traversable (Traversable(traverse)) import Numeric.AD.Internal.Classes@@ -46,7 +46,7 @@               ga = undefined  composeFunctorTyCon :: TyCon-composeFunctorTyCon = mkTyCon "Numeric.AD.Internal.Composition.ComposeFunctor"+composeFunctorTyCon = mkTyCon3 "ad" "Numeric.AD.Internal.Composition" "ComposeFunctor" {-# NOINLINE composeFunctorTyCon #-}  composeFunctorConstr :: Constr@@ -160,7 +160,7 @@     typeOf = typeOfDefault      composeModeTyCon :: TyCon-composeModeTyCon = mkTyCon "Numeric.AD.Internal.Composition.ComposeMode"+composeModeTyCon = mkTyCon3 "ad" "Numeric.AD.Internal.Composition" "ComposeMode" {-# NOINLINE composeModeTyCon #-}  composeModeConstr :: Constr
Numeric/AD/Internal/Types.hs view
@@ -16,7 +16,7 @@     ) where  import Data.Data (Data(..), mkDataType, DataType, mkConstr, Constr, constrIndex, Fixity(..))-import Data.Typeable (Typeable1(..), Typeable(..), TyCon, mkTyCon, mkTyConApp, gcast1)+import Data.Typeable (Typeable1(..), Typeable(..), TyCon, mkTyCon3, mkTyConApp, gcast1) import Language.Haskell.TH import Numeric.AD.Internal.Classes @@ -48,7 +48,7 @@               asArgsType = const  adTyCon :: TyCon-adTyCon = mkTyCon "Numeric.AD.Internal.Types.AD"+adTyCon = mkTyCon3 "ad" "Numeric.AD.Internal.Types" "AD" {-# NOINLINE adTyCon #-}  adConstr :: Constr
Numeric/AD/Newton.hs view
@@ -46,7 +46,7 @@ --  > module Data.Complex --  > take 10 $ findZero ((+1).(^2)) (1 :+ 1)  -- converge to (0 :+ 1)@ ---findZero :: Fractional a => UU a -> a -> [a]+findZero :: (Fractional a, Eq a) => UU a -> a -> [a] findZero f = go     where         go x = x : if y == 0 then [] else go (x - y/y') @@ -62,7 +62,7 @@ -- -- > take 10 $ inverseNewton sqrt 1 (sqrt 10)  -- converges to 10 ---inverse :: Fractional a => UU a -> a -> a -> [a]+inverse :: (Fractional a, Eq a) => UU a -> a -> a -> [a] inverse f x0 y = findZero (\x -> f x - lift y) x0 {-# INLINE inverse  #-} @@ -71,7 +71,7 @@ -- increasingly accurate results.  (Modulo the usual caveats.) --  -- > take 10 $ fixedPoint cos 1 -- converges to 0.7390851332151607-fixedPoint :: Fractional a => UU a -> a -> [a]+fixedPoint :: (Fractional a, Eq a) => UU a -> a -> [a] fixedPoint f = findZero (\x -> f x - x) {-# INLINE fixedPoint #-} @@ -80,7 +80,7 @@ -- accurate results.  (Modulo the usual caveats.) -- -- > take 10 $ extremum cos 1 -- convert to 0 -extremum :: Fractional a => UU a -> a -> [a]+extremum :: (Fractional a, Eq a) => UU a -> a -> [a] extremum f = findZero (diff (decomposeMode . f . composeMode)) {-# INLINE extremum #-} 
ad.cabal view
@@ -1,5 +1,5 @@ name:         ad-version:      1.2.0.2+version:      1.3 license:      BSD3 license-File: LICENSE copyright:    (c) Edward Kmett 2010-2011,@@ -14,10 +14,10 @@ extra-source-files: TODO synopsis:     Automatic Differentiation -description:  +description:     Forward-, reverse- and mixed- mode automatic differentiation combinators with a common API.-    . -    Type-level \"branding\" is used to both prevent the end user from confusing infinitesimals +    .+    Type-level \"branding\" is used to both prevent the end user from confusing infinitesimals     and to limit unsafe access to the implementation details of each Mode.     .     Each mode has a separate module full of combinators.@@ -32,8 +32,8 @@     .     * @Numeric.AD.Mode.Mixed@ computes using whichever mode or combination thereof is suitable to each individual combinator. This mode is the default, re-exported by @Numeric.AD@     .-    . -    While not every mode can provide all operations, the following basic operations are supported, modified as +    .+    While not every mode can provide all operations, the following basic operations are supported, modified as     appropriate by the suffixes below:     .     * 'grad' computes the gradient (partial derivatives) of a function at a point.@@ -60,6 +60,10 @@     .     * @0@ means that the resulting derivative list is padded with 0s at the end.     .+    Changes since 1.2+    .+    * Compiles with template haskell 2.6, changed interface to comply with the lack of Eq and Show as superclasses of Num in the new GHC.+    .     Changes since 1.1.3     .     * Made primal calculations strict where possible.@@ -73,7 +77,7 @@     Changes since 1.0.0     .     * Changed the way 'Show' was derived to comply with changes in instance resolution in ghc >= 7.0 && <= 7.1-    . +    .     Changes since 0.45.0     .     * Converted 'Stream' to use the external 'comonad' package@@ -103,11 +107,7 @@   type: git   location: git://github.com/ekmett/ad.git -flag TemplateHaskell24-  manual: False-  default: False--library +library   extensions: CPP    other-extensions:@@ -126,47 +126,42 @@     TypeOperators     UndecidableInstances -  if flag(TemplateHaskell24)-    build-depends: template-haskell >= 2.4 && < 2.5-    cpp-options: -DOldClassI-  else -    build-depends: template-haskell >= 2.5 && < 2.6-  -  build-depends:       +  build-depends:     base       >= 4     && < 5,-    data-reify >= 0.6   && < 0.7, +    data-reify >= 0.6   && < 0.7,     containers >= 0.2   && < 0.5,     array      >= 0.2   && < 0.4,     comonad    >= 1.1.1 && < 1.2,-    free       >= 2.0   && < 2.1-  +    free       >= 2.0   && < 2.1,+    template-haskell >= 2.6 && < 2.7+   exposed-modules:     Numeric.AD     Numeric.AD.Classes     Numeric.AD.Types     Numeric.AD.Newton     Numeric.AD.Halley-  +     Numeric.AD.Internal.Classes     Numeric.AD.Internal.Combinators-  +     Numeric.AD.Internal.Forward     Numeric.AD.Internal.Tower     Numeric.AD.Internal.Reverse     Numeric.AD.Internal.Sparse     Numeric.AD.Internal.Dense     Numeric.AD.Internal.Composition-  +     Numeric.AD.Mode.Directed     Numeric.AD.Mode.Forward     Numeric.AD.Mode.Mixed     Numeric.AD.Mode.Reverse     Numeric.AD.Mode.Tower     Numeric.AD.Mode.Sparse-  +   other-modules:     Numeric.AD.Internal.Types     Numeric.AD.Internal.Tensors     Numeric.AD.Internal.Identity-  +   ghc-options: -Wall -fspec-constr -fdicts-cheap -O2