Beispiel #1
0
DM_P SUB_PP_P(DM_P p1, DM_P p2)
{
	DM_P res;           // результ. многочлен
	unsigned int k = 0; // вспомогательная переменная
	res.c = NULL;       // массив коэф.
	if (p1.m >= p2.m)   // сравнение размеров двух многочленов (первый больше или равен второму)
	{
		res.c = new DM_Q[p1.m]; // выделяем память под результ. многочлен
		res.m = p1.m;           // приравниваем степень результ. многочлена первому 
		for (unsigned int i = 0;i < p2.m;i++)
		{
			res.c[i] = SUB_QQ_Q(p1.c[i], p2.c[i]); // вычитаем коэф.
			k = i;
		}
		for (unsigned int i = k;i < p1.m;i++) // заполняем массив оставшимися коэф. 
		{
			res.c[i] = p1.c[i];
		}

	}
	else               // сравнение размеров двух многочленов (второй больше первого)
	{
		res.c = new DM_Q[p2.m]; // выделяем память под результ. многочлен
		res.m = p2.m;           // приравниваем степень результ. многочлена второму
		for (unsigned int i = 0;i < p1.m;i++)
		{
			res.c[i] = SUB_QQ_Q(p2.c[i], p1.c[i]);  // вычитаем коэф. 
			k = i;
		}
		for (unsigned int i = k;i < p2.m;i++) // заполняем массив оставшимися коэф.
		{
			res.c[i] = p2.c[i];
		}
	}
	return res;
}
Beispiel #2
0
struct POLYNOMIAL MUL_Pxk_P(struct POLYNOMIAL polynom, int k)
  {
  struct POLYNOMIAL result;
  result.degree = polynom.degree + k;
  result.factors = (struct POLYNOMIAL*)malloc( (result.degree + 1) * sizeof(struct POLYNOMIAL) );
  int i;
  for (i = result.degree; i >= k; --i)
    result.factors[i] = polynom.factors[i - k];
  for (i = 0; i < k; ++i)
    {
    polynom.factors[i].denominator = SUB_QQ_Q (polynom.factors[i].denominator, polynom.factors[i].denominator);
    }

  return polynom;
  }