sig
  type forward
  module Forward :
    sig
      val neg :
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val log :
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val exp :
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val sqrt :
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val add :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val sub :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val mul :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
      val div :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> Numerors_arithmetics.Arithmetic.forward
    end
  module Backward :
    sig
      val neg :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> I.t Eval.or_bottom
      val add :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> (I.t * I.t) Eval.or_bottom
      val sub :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> (I.t * I.t) Eval.or_bottom
      val mul :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> (I.t * I.t) Eval.or_bottom
      val div :
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t ->
        Numerors_arithmetics.t -> (I.t * I.t) Eval.or_bottom
    end
end