anchor.diff:          | :? int as p -> D(float p)
           | :? D as p -> p
       /// Make D, with tag `i`, primal value `p`, and tangent value `t`
  -    let inline makeDFIPT i p t =
  +    let inline makeDFipt i p t =
           match box p with
           | :? float as p ->
               match box t with
  
positive.code:     /// Original value and gradient-vector product (directional derivative) of a vector-to-scalar function `f`, at point `x`, along vector `v`
      let inline gradv' f x v =
          let i = GlobalTagger.Next
          Array.map2 (makeDFIPT i) x v |> f |> tuple
  
      /// Gradient-vector product (directional derivative) of a vector-to-scalar function `f`, at point `x`, along vector `v`
      let inline gradv f x v =
  
negative.code:                 | DF(pp,pt,pi), DF(tp,tt,ti) when pi = ti -> DF(DF(pp,pt,pi), DF(tp,tt,pi), i)
                  | DF(pp,pt,pi), DF(tp,_ ,ti) when pi > ti -> DF(DF(pp,pt,pi), DF(tp,D 0.,pi), i)
      /// Make D, with primal value `p` and tangent value `t`. A new tag will be attached using the global tagger.
      let inline makeDFpt p t = makeDFipt GlobalTagger.Next p t
      /// Make D, with primal tag `i` and primal value `p`, and tangent 1.
      let inline makeDFip1 i p =
          match box p with
          | :? float as p -> DF(D p, D 1., i)
          | :? D as p ->
  