template<typename T> using Hessian = ImplicitFunc<dim>::template Hessian<T>; \
\
[[nodiscard]] virtual real operator()(const Point<dim> &point) const final; \
\
[[nodiscard]] virtual ::algoim::Interval<dim> operator()(const Point<dim, ::algoim::Interval<dim>> &point) \
const final; \
\
[[nodiscard]] virtual Vector<real, dim> grad(const Point<dim> &point) const final; \
\
[[nodiscard]] virtual Vector<::algoim::Interval<dim>, dim> grad(const Point<dim, ::algoim::Interval<dim>> &point) \
const final; \
\
[[nodiscard]] Hessian<real> virtual hessian(const Point<dim> &point) const final; \
\
private: \
template<typename T> [[nodiscard]] T eval_(const Point<dim, T> &point) const; \
\
template<typename T> [[nodiscard]] Vector<T, dim> grad_(const Point<dim, T> &point) const; \
\
template<typename T> [[nodiscard]] Hessian<T> hessian_(const Point<dim, T> &point) const