Loading...
Searching...
No Matches
bbm::concepts::backbone::gradient Concept Reference

#include <gradient.h>

Concept definition

template<typename T>
concept bbm::concepts::backbone::gradient = requires(T a)
{
{ is_diff_v<T> } -> std::convertible_to<bool>;
requires is_diff_v<T>;
{ track_gradient(a, true) };
{ is_gradient_tracked(a) } -> std::convertible_to<bool>;
{ gradient(a) } -> std::convertible_to<remove_diff_t<T>>;
{ detach_gradient(a) } -> std::convertible_to<remove_diff_t<T>>;
}
Definition: gradient.h:25
void track_gradient(T &t, bool toggle=true)
Enable/disable tracking of gradients for a variable.
Definition: backbone.h:451
void backward_gradient(T &t)
Enable backward/reverse gradient tracking.
Definition: backbone.h:479
bool is_gradient_tracked(const T &t)
Checks if gradients are enabled for a variable.
Definition: backbone.h:436
auto gradient(T &t)
Return the gradient.
Definition: backbone.h:423
void forward_gradient(T &t)
Enable forward gradient tracking.
Definition: backbone.h:465
auto detach_gradient(T &t)
Detach the value from the gradient computations.
Definition: backbone.h:408