Changelog of @hackage/ad 4.3.1

4.3.1

  • Further improvements have been made in the performance of Sparse mode, at least asymptotically, when used on functions with many variables. Since this is the target use-case for Sparse in the first place, this seems like a good trade-off. Note: this results in an API change, but only in the API of an Internal module, so this is treated as a minor version bump.

4.3

  • Made drastic improvements in the performance of Tower and Sparse modes thanks to the help of Björn von Sydow.
  • Added constrained convex optimization.
  • Incorporated some suggestions from herbie for improving floating point accuracy.

4.2.4

  • Added Newton.Double modules for performance.

4.2.3

  • reflection 2 support

4.2.2

  • Major bug fix for grads, jacobians, and anything that uses Sparse mode in Numeric.AD. Derivatives after the first two were previously incorrect.

4.2.1.1

  • Support nats version 1

4.2.1

  • Added stochasticGradientDescent.

4.2

  • Removed broken Directed mode.
  • Added Numeric.AD.Rank1 combinators and moved most infinitesimal handling back out of the modes and into an AD wrapper.

4.1

  • Fixed a bug in the type of conjugateGradientAscent and conjugateGradientDescent that prevent users from being able to ever call it.

4.0.0.1

  • Added the missing instances.h header file to extra-source-files.

4.0

  • An overhaul permitting monomorphic modes was completed by @alang9.
  • Add a ForwardDouble monomorphic mode

3.4

  • Added support for erf and inverf, etc. from Data.Number.Erf.
  • Split the infinitesimal and mode into two separate parameters to facilitate inlining and easier extension of the API.

3.3.1

  • Build system improvements
  • Removed unused LANGUAGE pragmas
  • Added HLint configuration
  • We now use exactly the same versions of the packages used to build ad when running the doctests.

3.3

  • Renamed Reverse to Kahn and Wengert to Reverse. We use Arthur Kahn's topological sorting algorithm to sort the tape after the fact in Kahn mode, while the stock Reverse mode builds a Wengert list as it goes, which is more efficient in practice.

3.2.2

  • Export of the conjugateGradientDescent and gradientDescent from Numeric.AD

3.2.1

  • conjugateGradientDescent now stops before it starts returning NaN results.

3.2

  • Renamed Chain to Wengert to reflect its use of Wengert lists for reverse mode.
  • Renamed lift to auto to avoid conflict with the more prevalent transformers library.
  • Fixed a bug in Numeric.AD.Forward.gradWith', which caused it to return the wrong value for the primal.

3.1.4

  • Added a better "convergence" test for findZero
  • Compute tan and tanh derivatives directly.

3.1.3

  • Added conjugateGradientDescent and conjugateGradientAscent to Numeric.AD.Newton.

3.1.2

  • Dependency bump

3.1

  • Added Chain mode, which is Reverse using a linear tape that doesn't need to be sorted.
  • Added a suite of doctests.
  • Bug fix in Forward mode. It was previously yielding incorrect results for anything that used bind or bind' internally.

3.0

  • Moved the contents of Numeric.AD.Mode.Mixed into Numeric.AD
  • Split off Numeric.AD.Variadic for the variadic combinators
  • Removed the UU, FU, UF, and FF type aliases.
  • Stopped exporting the types for Mode and AD from almost every module. Import Numeric.AD.Types if necessary.
  • Renamed Tensors to Jet
  • Dependency bump to be compatible with ghc 7.4.1 and mtl 2.1
  • More aggressive zero tracking.
  • diff (**n) 0 for constant n and diff (0**) both now yield the correct answer for all modes.