Текст подпрограммы и версий
zp36r_c.zip  zp36d_c.zip 
Тексты тестовых примеров
tzp36r_c.zip  tzp36d_c.zip 

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

Назначение

Вычисление синуса и косинуса от полинома с вещественными коэффициентами.

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

zp36r_c вычисляет М первых коэффициентов полиномов

       B(X)  =  B(1) + B(2)*X + B(3)*X2 + ... + B(M)*X(M - 1) + ... 
  и
       C(X)  =  C(1) + C(2)*X + C(3)*X2 + ... + C(M)*X(M - 1) + ...  , 

таких, что  В (Х) = sin А (Х) и  С (Х) = cos А (Х), где  А (Х) - заданный полином степени NР

       A(X)  =  A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP  , 

у которого коэффициенты  А ( I ),  I = 1, 2, 3, ..., NР являются вещественными.

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

    int zp36r_c (integer *np, real *a, integer *m, real *b,
            real *c)

Параметры

np - заданная степень полинома  A (x) (тип: целый);
a - вещественный вектор длины np + 1, содержащий коэффициенты заданного полинома  A (x) в порядке возрастания степеней;
m - заданное число искомых коэффициентов полиномов  B (x) и  C (x) (тип: целый);
b, c - вещественные векторы длины m, содержащие вычисленные коэффициенты полиномов  B (x) и  C (x) в порядке возрастания степеней.

Версии

zp36d_c - вычисление синуса и косинуса от полинома с вещественными коэффициентами с повышенной точностью. При этом векторы a, b и c должны иметь тип double.

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

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

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

int main(void)
{
    /* Initialized data */
    static float a[5] = { 24.f,-50.f,35.f,-10.f,1.f };

    /* Local variables */
    extern int zp36r_c(int *, float *, int *, float *, float *);
    static float b[4], c__[4];
    static int m, np, i__;

    np = 4;
    m = 4;
    zp36r_c(&np, a, &m, b, c__);

    printf("\n %5i \n", np);
    for (i__ = 1; i__ <= 5; ++i__) {
         printf("\n %16.7e \n", a[i__ - 1]);
    }
    printf("\n %5i \n", m);
    for (i__ = 1; i__ <= 4; ++i__) {
         printf("\n %16.7e \n", b[i__ - 1]);
    }
    for (i__ = 1; i__ <= 4; ++i__) {
         printf("\n   %16.7e \n", c__[i__ - 1]);
    }
    return 0;
} /* main */


Результаты:
 
       b(1) = - 0.905578 ,      b(2) = - 21.208950 ,
       b(3) = 1146.819218 ,   b(4) = 7248.058730

       c__(1) = 0.424179 ,         c__(2) = - 45.278918 , 
       c__(3) = - 498.528516 ,   c__(4) = 19599.473354