/** * Multiply this product with a lcm. * @return true */ const CNormalSum* CNormalProduct::multiply(const CNormalLcm& lcm) { if (fabs(mFactor) < 1.0E-100) { CNormalSum* zeroSum = new CNormalSum(); zeroSum->add(*this); return zeroSum; } CNormalLcm* tmp = new CNormalLcm(lcm); multiply(tmp->getItemPowers()); CNormalSum* sum = new CNormalSum(); sum->add(*this); std::vector<CNormalSum*>::const_iterator it; std::vector<CNormalSum*>::const_iterator itEnd = tmp->getSums().end(); for (it = tmp->getSums().begin(); it != itEnd; ++it) { sum->multiply(**it); } delete tmp; return sum; }