|
Текст подпрограммы и версий 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