123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960# 1 "src/base/optimise/owl_numdiff_generic_sig.ml"(*
* OWL - OCaml Scientific Computing
* Copyright (c) 2016-2022 Liang Wang <liang@ocaml.xyz>
*)(** Numdiff: numerical differentiation module *)openOwl_types(** The functor used to generate Numdiff module of various precisions. *)(* TODO: unit test *)moduletypeSig=sig(** {5 Type definition} *)typearr(** General ndarray type *)typeelt(** Scalar type *)(** {5 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)