9#include "idol/general/numericals.h" 
   14    template<
class KeyT, 
class ValueT>
 
   18template<
class KeyT = 
idol::Var, 
class ValueT = 
double>
 
   21    ValueT m_constant = 0.;
 
   39    AffExpr& operator*=(
double t_rhs);
 
   40    AffExpr& operator/=(
double t_rhs);
 
   46    ValueT& constant() { 
return m_constant; }
 
   48    [[nodiscard]] 
const ValueT& constant()
 const { 
return m_constant; }
 
   50    [[nodiscard]] 
bool is_zero(
double t_tolerance)
 const { return ::idol::is_zero(constant(), t_tolerance) && linear().is_zero(t_tolerance); }
 
 
   62template<
class KeyT, 
class ValueT>
 
   67template<
class Key1, 
class ValueT>
 
   70    result.constant() = -result.constant();
 
   71    result.linear() = -result.linear();
 
   75template<
class Key1, 
class ValueT>
 
   80template<
class Key1, 
class ValueT>
 
   85template<
class Key1, 
class ValueT>
 
   90template<
class Key1, 
class ValueT>
 
   92    m_linear += t_rhs.m_linear;
 
   93    m_constant += t_rhs.m_constant;
 
   97template<
class Key1, 
class ValueT>
 
   99    m_linear -= t_rhs.m_linear;
 
  100    m_constant -= t_rhs.m_constant;
 
  104template<
class Key1, 
class ValueT>
 
  111template<
class Key1, 
class ValueT>
 
  120    template<
class Key1, 
class ValueT>
 
  125            t_os << t_expr.linear();
 
  130        t_os << t_expr.constant();
 
  132        if (!t_expr.linear().empty()) {
 
  133            t_os << 
" + " << t_expr.linear();