59 T
min_value = std::numeric_limits<T>::quiet_NaN(),
60 T
max_value = std::numeric_limits<T>::quiet_NaN(),
125 T
min_value = std::numeric_limits<T>::quiet_NaN(),
126 T
max_value = std::numeric_limits<T>::quiet_NaN(),
136 bool has_value_limits_ =
true;
137 bool has_first_derivative_limits_ =
true;
138 bool has_second_derivative_limits_ =
true;
141 T min_value_ = std::numeric_limits<T>::quiet_NaN();
142 T max_value_ = std::numeric_limits<T>::quiet_NaN();
145 T min_first_derivative_neg_ = std::numeric_limits<T>::quiet_NaN();
146 T max_first_derivative_pos_ = std::numeric_limits<T>::quiet_NaN();
147 T min_first_derivative_pos_ = std::numeric_limits<T>::quiet_NaN();
148 T max_first_derivative_neg_ = std::numeric_limits<T>::quiet_NaN();
151 T min_second_derivative_ = std::numeric_limits<T>::quiet_NaN();
152 T max_second_derivative_ = std::numeric_limits<T>::quiet_NaN();
275 if (has_first_derivative_limits_)
278 if (v0 >
static_cast<T
>(0.0))
280 dv_max = max_first_derivative_pos_ *
dt;
281 dv_min = min_first_derivative_pos_ *
dt;
283 else if (v0 <
static_cast<T
>(0.0))
285 dv_min = min_first_derivative_neg_ *
dt;
286 dv_max = max_first_derivative_neg_ *
dt;
290 dv_min = min_first_derivative_neg_ *
dt;
291 dv_max = max_first_derivative_pos_ *
dt;
298 return tmp !=
static_cast<T
>(0.0) ?
v /
tmp :
static_cast<T
>(1.0);