20 #include "TermConstant.h" 
   21 #include "TermProduct.h" 
   23 #include "TermVariable.h" 
   36     if (factor1->
less(factor2)) {
 
   37         this->factor1_ = factor1;
 
   38         this->factor2_ = factor2;
 
   40         this->factor1_ = factor2;
 
   41         this->factor2_ = factor1;
 
   93     Problem* problem = this->getProblem();
 
   94     if (problem != variable->getProblem()) {
 
   96         throw problem_mismatch_exception;
 
  100             this->factor1_->differentiate(variable),
 
  104             this->factor2_->differentiate(variable)));
 
  109         TermValueSet* termValues) {
 
  110     return this->factor1_->
evaluate(variableValues, termValues) *
 
  111             this->factor2_->
evaluate(variableValues, termValues);
 
  118     } 
else if (term->Term::less(
this)) {
 
  121     term_product = 
static_cast<const TermProduct *
> (term);
 
  122     if (this->factor1_ < term_product->factor1_) {
 
  124     } 
else if (term_product->factor1_ < this->factor1_) {
 
  127     if (this->factor2_ < term_product->factor2_) {
 
  135     std::ostringstream os;
 
  136     os << 
"(" << this->factor1_ << 
" * " << this->factor2_ << 
")";