Текст подпрограммы и версий
zp13i_c.zip 
Тексты тестовых примеров
tzp13i_c.zip 

Подпрограмма:  zp13i_c

Назначение

Вычисление рациональных корней полиномов с целыми коэффициентами.

Математическое описание

Подпрограмма zp13i_c вычисляет M рациональных корней полинома степени N

        A(1)  +  A(2) X  + ... +  A(N + 1) XN 

с целыми коэффициентами. Ненулевые рациональные корни  pi / q i ,  i = 1, 2,..., M, размещаются в массивах P и Q соответственно.

Использование

    int zp13i_c (integer *a, integer *n, integer *p, integer *q,
            integer *m)

Параметры

a - целый одномерный массив длины n + 1, содержащий заданные коэффициенты полинома в порядке возрастания степеней;
n - заданная степень полинома (тип: целый);
p, q - целые одномерные массивы длины n + 1, содержащие вычисленные рациональные корни  pi / q i ,  i = 1, 2,..., m;
m - целая переменная, содержащая на выходе количество рациональных корней.

Версии: нет

Вызываемые подпрограммы: нет

Замечания по использованию

  В некоторых случаях последний вычисленный корень может совпадать по значению с первым. Поэтому массивы p и q должны иметь максимальную длину n + 1, а не n .

Пример использования

int main(void)
{
    /* Initialized data */
    static int a[4] = { 3,14,3,-36 };

    /* Local variables */
    extern int zp13i_c(int *, int *, int *, int *, int *);
    static int m, p[4], q[4];

    zp13i_c(a, &c__3, p, q, &m);

    printf("\n %5i %5i %5i %5i \n", p[0], p[1], p[2], p[3]);
    printf("\n %5i %5i %5i %5i \n", q[0], q[1], q[2], q[3]);
    printf("\n %5i \n", m);
    return 0;
} /* main */


Результаты: 

           p   =   (-1, 3, -3), 
           q   =   ( 3, 4,  9),  
           m   =   3