Текст подпрограммы и версий av06r_c.zip av06d_c.zip av06c_c.zip |
Тексты тестовых примеров tav06r_c.zip tav06d_c.zip tav06c_c.zip |
Вычисление выражения (A + (U,V)) / B, где A и B - заданные числа, U и V - заданные векторы.
Для заданных векторов U и V длины N вычисляется выражение (А + (U,V)) / В, где
N (U,V) = ∑ UK*VK K=1
- скаляpное пpоизведение вектоpов U и V, а А и В - заданные числа.
real av06r_c (real *u, real *v, real *a, real *b, integer *n)
Параметры
u, v - | одномерные массивы длины n, в которых задаются исходные векторы (тип: вещественный); |
a, b - | заданные числа (тип: вещественный); |
n - | размерность векторов U и V (тип: целый). |
Версии
av06d_c - | вычисление выражения (A + (U,V)) / B с повышенной точностью; |
av06c_c - | вычисление выражения (A + (U,V)) / B для комплексных U, V, A и B; |
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В функции av06d_c параметры u, v, a, b имеют тип double. | |
2. |
В функции av06c_c параметры u, v, a, b имеют тип complex. | |
3. |
В функции av06c_c скалярное произведение вычисляется по формуле
n
(U,V) = ∑ Uk*Vk .
k=1
|
int main(void) { /* Initialized data */ static float u1[4] = { 1.f,2.f,3.f,4.f }; static float u2[4] = { 1.f,0.f,1.f,0.f }; /* Local variables */ extern float av06r_c(float *, float *, float *, float *, int *); static float a, b; static int n; static float s; n = 4; a = 3.f; b = 2.f; s = (float)av06r_c(u1, u2, &a, &b, &n); printf("\n %12.4e \n", s); return 0; } /* main */ Результат: s = 3.5