Текст подпрограммы и версий
av06r_c.zip  av06d_c.zip  av06c_c.zip 
Тексты тестовых примеров
tav06r_c.zip  tav06d_c.zip  tav06c_c.zip 

Функция:  av06r_c

Назначение

Вычисление выражения (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