12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364# 1 "src/base/optimise/owl_numdiff_generic_sig.ml"(*
* OWL - OCaml Scientific and Engineering Computing
* Copyright (c) 2016-2019 Liang Wang <liang.wang@cl.cam.ac.uk>
*)(** Numdiff: numerical differentiation module *)openOwl_types(** The functor used to generate Numdiff module of various precisions. *)(* TODO: unit test *)moduletypeSig=sig(** {6 Type definition} *)typearr(** General ndarray type *)typeelt(** Scalar type *)(** {6 Basic functions} *)valdiff:(elt->elt)->elt->elt(** derivative of ``f : scalar -> scalar``. *)valdiff':(elt->elt)->elt->elt*elt(** derivative of ``f : scalar -> scalar``, return both ``f x`` and ``f' x``. *)valdiff2:(elt->elt)->elt->elt(** second order derivative of ``f : float -> float``. *)valdiff2':(elt->elt)->elt->elt*elt(** second order derivative of ``f : float -> float``, return ``f x`` and ``f' x``. *)valgrad:(arr->elt)->arr->arr(** gradient of ``f : vector -> scalar``. *)valgrad':(arr->elt)->arr->arr*arr(** gradient of ``f : vector -> scalar``, return ``f x`` and ``g x``. *)valjacobian:(arr->arr)->arr->arr(** jacobian of ``f : vector -> vector``. *)valjacobian':(arr->arr)->arr->arr*arr(** jacobian of ``f : vector -> vector``, return ``f x`` and ``j x``. *)valjacobianT:(arr->arr)->arr->arr(** transposed jacobian of ``f : vector -> vector``. *)valjacobianT':(arr->arr)->arr->arr*arr(** transposed jacobian of ``f : vector -> vector``, return ``f x`` and ``j x``. *)end(* This is a dumb module for checking the module signature. *)moduleImpl(A:Ndarray_Numdiffwithtypeelt=float):Sig=Owl_numdiff_generic.Make(A)