24 # pragma warning (disable: 4786)
25 # pragma warning (disable: 4243)
27 # pragma warning (disable: 4355)
48 return *itemPower1 < *itemPower2;
62 std::set<CNormalItemPower*, compareItemPowers >::const_iterator it;
63 std::set<CNormalItemPower*, compareItemPowers >::const_iterator itEnd = src.
mItemPowers.end();
67 for (it = src.
mItemPowers.begin(); it != itEnd; ++it)
71 bool result = this->
mItemPowers.insert(pDestItemPower).second;
72 assert(result ==
true);
82 std::set<CNormalItemPower*, compareItemPowers >::const_iterator it;
83 std::set<CNormalItemPower*, compareItemPowers >::const_iterator itEnd = src.
mItemPowers.end();
85 for (it = src.
mItemPowers.begin(); it != itEnd; ++it)
96 std::set<CNormalItemPower*, compareItemPowers >::const_iterator it;
97 std::set<CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
113 std::set<CNormalItemPower*, compareItemPowers>::iterator it =
mItemPowers.begin(), endit =
mItemPowers.end();
138 std::set<CNormalItemPower*, compareItemPowers>::iterator it =
mItemPowers.begin(), endit =
mItemPowers.end();
162 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
163 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
167 if ((*it)->getItem().areEqual(choice) ==
true)
169 (*it)->setExp((*it)->getExp() + 1.0);
188 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
189 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
193 if ((*it)->getItem().areEqual(pow) ==
true)
195 (*it)->setExp((*it)->getExp() + 1.0);
214 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
215 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
219 if ((*it)->getItem().areEqual(fun) ==
true)
221 (*it)->setExp((*it)->getExp() + 1.0);
240 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
241 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
245 if ((*it)->getItem().areEqual(item) ==
true)
247 (*it)->setExp((*it)->getExp() + 1.0);
266 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
267 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
271 if ((*it)->getItem().areEqual(itemPower.
getItem()))
273 (*it)->setExp((*it)->getExp() + itemPower.
getExp());
292 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
293 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd = itemPowers.end();
295 for (it = itemPowers.begin(); it != itEnd; ++it)
319 std::set <CNormalItemPower*, compareItemPowers >::iterator it;
320 std::set <CNormalItemPower*, compareItemPowers >::iterator itEnd =
mItemPowers.end();
324 if ((*it)->getItem().areEqual(itemPower.
getItem()))
334 if (fabs(dif) < 1.0E-100)
378 std::set<CNormalProduct*, compareProducts>::const_iterator it;
379 std::set<CNormalProduct*, compareProducts>::const_iterator itEnd = tmp->
getProducts().end();
381 for (it = tmp->
getProducts().begin(); it != itEnd; ++it)
383 (*it)->multiply(*
this);
408 std::vector<CNormalSum*>::const_iterator it;
409 std::vector<CNormalSum*>::const_iterator itEnd = tmp->
getSums().end();
411 for (it = tmp->
getSums().begin(); it != itEnd; ++it)
443 std::set< CNormalItemPower*, compareItemPowers >::const_iterator it;
444 std::set< CNormalItemPower*, compareItemPowers >::const_iterator itEnd =
mItemPowers.end();
445 std::set< CNormalItemPower*, compareItemPowers >::const_iterator it2;
450 if (!(**it == **it2))
476 std::ostringstream os;
477 bool firstFactor =
true;
482 os <<
"(" << this->
mFactor <<
")";
492 std::set <CNormalItemPower*, compareItemPowers >::const_iterator it;
493 std::set <CNormalItemPower*, compareItemPowers >::const_iterator itEnd = this->
mItemPowers.end();
495 for (it = this->
mItemPowers.begin(); it != itEnd; ++it)
497 if (firstFactor ==
false)
528 std::set<CNormalItemPower*, compareItemPowers >::const_iterator it = this->
mItemPowers.begin(), endit = this->
mItemPowers.end();
529 std::set<CNormalItemPower*, compareItemPowers >::const_iterator it2 = rhs.
mItemPowers.begin();
532 while (result ==
false && it != endit)
555 std::set<CNormalItemPower*, compareItemPowers>::const_iterator it = this->
mItemPowers.begin(), endit = this->
mItemPowers.end();
563 it = set.begin(), endit = set.end();
578 std::set<CNormalItemPower*, compareItemPowers> itemPowersCopy(this->
mItemPowers);
579 std::set<CNormalItemPower*, compareItemPowers>::iterator it = itemPowersCopy.begin(), endit = itemPowersCopy.end();
583 while (it != endit && result ==
true)
593 delete pTmpItemPower;
602 std::vector<CNormalItemPower*> tmpV;
617 pGeneralPower->
multiply(*static_cast<CNormalGeneralPower*>(&(*it)->getItem()));
645 if (pGeneralPower && !pGeneralPower->
checkIsOne())
648 pTmpItemPower->
setExp(1.0);
649 pTmpItemPower->
setItem(*pGeneralPower);
650 tmpV.push_back(pTmpItemPower);
653 delete pGeneralPower;
656 std::vector<CNormalItemPower*>::iterator vIt = tmpV.begin();
657 std::vector<CNormalItemPower*>::iterator vEndIt = tmpV.end();
659 while (vIt != vEndIt)
681 pTmpSum->
add(*pTmpProduct);
688 std::set<CNormalItemPower*, compareItemPowers>::const_iterator it = this->
mItemPowers.begin(), endit = this->
mItemPowers.end();
695 assert(pTmpPow != NULL);
722 pTmpSum->
add(*pTmpProduct);
724 std::set<CNormalItemPower*, compareItemPowers>::iterator it = this->
mItemPowers.begin(), endit = this->
mItemPowers.end();
731 assert(pGenPow != NULL);
static CNormalProduct * createUnitProduct()
virtual std::string toString() const
std::ostream & operator<<(std::ostream &os, const CNormalProduct &d)
CNormalFraction & getLeft()
const std::vector< CNormalSum * > & getSums() const
void multiply(const CNormalGeneralPower &generalPower)
CNormalGeneralPower * getDenominator() const
std::set< CNormalItemPower *, compareItemPowers > mItemPowers
void setDenominatorsOne()
bool add(const CNormalProduct &product)
bool setItem(const CNormalBase &item)
virtual ~CNormalProduct()
bool setDenominator(const CNormalSum &denominator)
const std::set< CNormalItemPower *, compareItemPowers > & getItemPowers() const
bool operator<(const CNormalProduct &rhs) const
bool setFactor(const C_FLOAT64 &number)
const C_FLOAT64 & getExp() const
virtual CNormalBase * copy() const
const C_FLOAT64 & getFactor() const
void setRight(const CNormalFraction &right)
bool checkDenominatorOne() const
bool setNumerator(const CNormalSum &numerator)
bool checkSamePowerList(const CNormalProduct &rhs) const
void setItemPowers(const std::set< CNormalItemPower *, compareItemPowers > &set)
CNormalProduct & operator=(const CNormalProduct &src)
void setLeft(const CNormalFraction &left)
bool operator()(const CNormalItemPower *itemPower1, const CNormalItemPower *itemPower2)
bool multiply(const C_FLOAT64 &number)
bool remove(std::set< CNormalItemPower *, compareItemPowers >::iterator it)
const std::set< CNormalProduct *, compareProducts > & getProducts() const
const std::set< CNormalItemPower *, compareItemPowers > & getItemPowers() const
bool setExp(const C_FLOAT64 &number)
bool operator==(const CNormalProduct &rhs) const