úÎu§kP¸      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ ·  GHC only  experimentalekmett@gmail.com^ is used by  deriveMode but is not exposed  via  # to prevent its abuse by end users  via the AD data type.  is used by  deriveMode but is not exposed  via the  ) class to prevent its abuse by end users  via the AD data type. QIt provides direct access to the result, stripped of its derivative information, K but this is unsafe in general as (lift . primal) would discard derivative N information. The end user is protected from accidentally using this function G by the universal quantification on the various combinators we expose. Embed a constant  Vector sum Scalar-vector multiplication Vector-scalar multiplication Scalar division   'zero' = 'lift' 0 6Higher-order versions of the stock numerical methods.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO  'one' = 'lift' 1 ¸¹º»¼½¾¿ÀPP t provides   instance Lifted $t given supplied instances for  , instance Lifted $t => Primal $t where ... - instance Lifted $t => Jacobian $t where ... The seemingly redundant  $tB constraints are caused by Template Haskell staging restrictions. ÁÂ$Find all the members defined in the  data type QQ f g# provides the following instances: < instance ('Lifted' $f, 'Num' a, 'Enum' a) => 'Enum' ($g a) 8 instance ('Lifted' $f, 'Num' a, 'Eq' a) => 'Eq' ($g a) : instance ('Lifted' $f, 'Num' a, 'Ord' a) => 'Ord' ($g a) A instance ('Lifted' $f, 'Num a, 'Bounded' a) => 'Bounded' ($g a) 3 instance ('Lifted' $f, 'Show' a) => 'Show' ($g a) 1 instance ('Lifted' $f, 'Num' a) => 'Num' ($g a) ? instance ('Lifted' $f, 'Fractional' a) => 'Fractional' ($g a) ; instance ('Lifted' $f, 'Floating' a) => 'Floating' ($g a) = instance ('Lifted' $f, 'RealFloat' a) => 'RealFloat' ($g a) ; instance ('Lifted' $f, 'RealFrac' a) => 'RealFrac' ($g a) 3 instance ('Lifted' $f, 'Real' a) => 'Real' ($g a) ÃR  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR O PQ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNR   = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ GHC only  experimentalekmett@gmail.comRSR* serves as a common wrapper for different  $ instances, exposing a traditional Y numerical tower. Universal quantification is used to limit the actions in user code to Z machinery that will return the same answers under all AD modes, allowing us to use modes ( interchangeably as both the type level "brand") and dictionary, providing a common API. STUVWXYRSTUVWXYURSTVWXYRSTSTUVWWXY GHC only  experimentalekmett@gmail.com Z[\]^_`ab Z[\]^_`ab Z[\^]_`ab Z[[\]^_`ab GHC only  experimentalekmett@gmail.com cThe dJ function calculates the first derivative of scalar-to-scalar function by [Z SR dThe dU function calculates the result and first derivative of scalar-to-scalar function by [Z SR eThe eL function calculates the first derivative of a scalar-to-scalar function by [Z SR fThe fU function calculates the result and first derivative of scalar-to-scalar function by [Z SR gThe gM function calculates the first derivative of scalar-to-nonscalar function by [Z SR hThe h[ function calculates the result and first derivative of a scalar-to-non-scalar function by [Z SR ijklm RSTcdefghijklmlmjkiefghcdRST  cdefghijklmGHC only experimentalekmett@gmail.comnReverse is a  A using reverse-mode automatic differentiation that provides fast diffFU, diff2FU, grad, grad2 and a fast jacobianF when you have a significantly smaller number of outputs than inputs. opA TapeT records the information needed back propagate from the output to each input during on   AD. qrstu>Used to mark variables for inspection during the reverse pass vwxyzÄÅÆ{|Ç+back propagate sensitivities along a tape. }6This returns a list of contributions to the partials. 2 The variable ids returned in the list are likely not unique! ~ Return an È of }$ given bounds for the variable IDs.  Return an É of sparse partials nopqrstuvwxyz{|}~noptsrq}~{|uvwxyznooptsrqqrstuvwxyzvwxyz{|}~ GHC only  experimentalekmett@gmail.com €The €J function calculates the gradient of a non-scalar-to-scalar function with on AD in a single pass. The U function calculates the result and gradient of a non-scalar-to-scalar function with on AD in a single pass. ‚The ‚c function calculates the jacobian of a non-scalar-to-non-scalar function with reverse AD lazily in m passes for m outputs. ƒThe ƒb function calculates both the result and the Jacobian of a nonscalar-to-nonscalar function, using m invocations of reverse AD,  where m( is the output dimensionality. Applying fmap snd* to the result will recover the result of ‚ „…†The †4 function calculates the value and derivative, as a ' pair, of a scalar-to-scalar function. ‡ˆ‰ŠThe Š function is a synonym for „. ‹The ‹ function is a synonym for †.  RST€‚ƒ„…†‡ˆ‰Š‹€‚ƒ„†ˆ‰…‡Š‹RST  €‚ƒ„…†‡ˆ‰Š‹ GHC only  experimentalekmett@gmail.com ŒTower is an AD  B that calculates a tangent tower by forward AD, and provides fast diffsUU, diffsUF Ž‘’“”• ŒŽ‘’“”• ŒŽ‘’“”• ŒŽŽ‘’“”• GHC only  experimentalekmett@gmail.com–—˜™š›œžŸ ¡¢£ RST–—˜™š›œžŸ ¡¢£œžŸ ¡–—™˜š›¢£ RST–—˜™š›œžŸ ¡¢£  GHC only  experimentalekmett@gmail.com¤¥¦§¨ RST¤¥¦§¨¤¥¦§¨RST ¤¥¦§¨  GHC only  experimentalekmett@gmail.com©¤Calculate the Jacobian of a non-scalar-to-non-scalar function, automatically choosing between forward and reverse mode AD based on the number of inputs and outputs ªøCalculate the answer and Jacobian of a non-scalar-to-non-scalar function, automatically choosing between forward- and reverse- mode AD based on the relative, number of inputs and outputs. If you need to support functions where the output is only a Ê, consider using  jacobianT from Numeric.AD.Forward or ª from Numeric.AD.Reverse directly.  RSTcdefgh€ˆ‰–—˜™š›œ©ª€©ªcdš›egfhˆ‰–™—˜œRST ©ª  GHC only  experimentalekmett@gmail.com «¬­®¯°±²³´µ¶· RST«¬­®¯°±²³´µ¶·°±²³´µ¶·«¯®­¬ RST «¯®­¬¬­®¯°±²³´µ¶·Ë   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`aabcddefghijklmnopqrstuvwwxyz{|{}~i€‚ƒ„…uvstnpoq†‡lmˆˆ‰Š‹ŒghŽ‘’“”•–—˜nolm ™ š › œ s t ž Ÿ ˆ w d n o l m s t u v ¡¢£¤¥¦§¨©ª«¬¬­®¯°±²³´¯µ¶·ad-0.12Numeric.AD.ClassesNumeric.AD.InternalNumeric.AD.Internal.ForwardNumeric.AD.ForwardNumeric.AD.Internal.ReverseNumeric.AD.ReverseNumeric.AD.Internal.TowerNumeric.AD.TowerNumeric.AD.Newton Numeric.ADNumeric.AD.DirectedJacobianDunarylift1lift1_binarylift2lift2_PrimalprimalModelift<+>*^^*^/zeroLifted showsPrec1==!compare1 fromInteger1+!*!-!negate1signum1abs1/!recip1 fromRational1 toRational1pi1exp1sqrt1log1**!logBase1sin1atan1acos1asin1tan1cos1sinh1atanh1acosh1asinh1tanh1cosh1properFraction1 truncate1floor1ceiling1round1 floatRadix1 floatDigits1 floatRange1 decodeFloat1 encodeFloat1 exponent1 significand1 scaleFloat1isNaN1isIEEE1isNegativeZero1isDenormalized1 isInfinite1atan21succ1pred1toEnum1 fromEnum1 enumFrom1 enumFromThen1 enumFromTo1enumFromThenTo1 minBound1 maxBound1one deriveLifted deriveNumericADrunADzipWithTIdprobeunprobeForwardtangentunbundlebundleapplybindbind2 transposeWithdiffdiff2diffUUdiff2UUdiffUFdiff2UF jacobianTjacobian jacobian2gradgrad2ReverseTapeUnaryBinaryVarLiftvarfromVarunbind unbindMap derivative derivative2partials partialArray partialMapdiffFUdiff2FUTowergetTowerzeroPaddd2tangents getADTowerdiffsUUdiffs0UUdiffs0UFdiffsUFdiffsdiffs0taylortaylor0 maclaurin maclaurin0findZeroinverse fixedPointextremumgradientDescent DirectionMixednegOne withPrimalfromBy fromIntegral1square1on discrete1 discrete2 discrete3varA liftedMembers lowerInstanceSrunS backPropagatebaseGHC.ArrArraycontainers-0.3.0.0 Data.IntMapIntMapGHC.BaseFunctor