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_ <<
")";