Текст подпрограммы и версий zp37r_c.zip zp37d_c.zip |
Тексты тестовых примеров tzp37r_c.zip tzp37d_c.zip |
Возведение в степень полинома с вещественными коэффициентами.
zp37r_c вычисляет М первых коэффициентов полинома
B(X) = XS*(B(1) + B(2)*X + ... + B(M)*X(M - 1) + ...) ,
такого, что В (Х) = (А (Х))R, где А (Х) - заданный полином, степени NР
A(X) = A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP ,
у которого коэффициенты А ( I ), I = 1, 2, 3, ..., NР + 1 являются вещественными. Здесь S = К * R, где К - число первых коэффициентов полинома А (Х), равных 0.
int zp37r_c (integer *np, real *a, integer *m, real *b, real *r, real *s)
Параметры
np - | заданная степень полинома A (x) (тип: целый); |
a - | вещественный вектор длины np + 1, содержащий коэффициенты заданного полинома A (x) в порядке возрастания степеней; |
m - | заданное число искомых коэффициентов полинома B (x) (тип: целый); |
b - | вещественный вектор длины m, содержащий вычисленные коэффициенты полинома B (x) в порядке возрастания степеней; |
r - | заданный показатель степени (тип: вещественный); |
s - | вещественная переменная, значение которой в результате работы подпрограммы полагается равным K * r. |
Версии
zp37d_c - | возведение в степень полинома с вещественными коэффициентами с повышенной точностью. При этом векторы a и b должны иметь тип double. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void) { /* Initialized data */ static float a[5] = { 24.f,-50.f,35.f,-10.f,1.f }; /* Local variables */ extern int zp37r_c(int *, float *, int *, float *, float *, float *); static float b[4]; static int m; static float r__, s; static int np, i__; r__ = 2.f; np = 4; m = 4; zp37r_c(&np, a, &m, b, &r__, &s); printf("\n %5i %5i \n", np, m); printf("\n %16.7e %16.7e \n", r__, s); for (i__ = 1; i__ <= 5; ++i__) { printf("\n %16.7e \n", a[i__ - 1]); } for (i__ = 1; i__ <= 4; ++i__) { printf("\n %16.7e \n", b[i__ - 1]); } return 0; } /* main */ Результаты: b(1) = 576. , b(2) = - 2400. , b(3) = 4180. , b(4) = - 3980. , s = 0.