Пример #1
0
bool CNormalSum::add(const CNormalSum& sum)
{
  std::set<CNormalProduct*, compareProducts>::const_iterator itProduct;
  std::set<CNormalProduct*, compareProducts>::const_iterator itProductEnd = sum.getProducts().end();
  for (itProduct = sum.getProducts().begin(); itProduct != itProductEnd; ++itProduct)
    add(**itProduct);

  std::set<CNormalFraction*>::const_iterator itFraction;
  std::set<CNormalFraction*>::const_iterator itFractionEnd = sum.getFractions().end();
  for (itFraction = sum.getFractions().begin(); itFraction != itFractionEnd; ++itFraction)
    add(**itFraction);

  return true;
}
Пример #2
0
/**
 * Multiply this product with a sum NOT CONTAINING FRACTIONS!.
 * @return sum.
 */
CNormalSum* CNormalProduct::multiply(const CNormalSum& sum)
{
  if (fabs(mFactor) < 1.0E-100)
    {
      CNormalSum* zeroSum = new CNormalSum();
      zeroSum->add(*this);
      return zeroSum;
    }
  CNormalSum* tmp = new CNormalSum(sum);
  CNormalSum* newsum = new CNormalSum();
  std::set<CNormalProduct*, compareProducts>::const_iterator it;
  std::set<CNormalProduct*, compareProducts>::const_iterator itEnd = tmp->getProducts().end();
  for (it = tmp->getProducts().begin(); it != itEnd; ++it)
    {
      (*it)->multiply(*this);
      newsum->add(**it);
    }
  delete tmp;
  return newsum;
}