Текст подпрограммы и версий
av11r_c.zip  av11d_c.zip  av11c_c.zip 
Тексты тестовых примеров
tav11r_c.zip  tav11d_c.zip  tav11c_c.zip 

Функция:  av11r_c

Назначение

Вычисление скалярного произведения двух вещественных векторов.

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

av11r_c вычисляет скалярное произведение двух  n - мерных вещественных векторов

  (X, Y) = x1 y1 + x2 y2 +...+ xn yn 

где  X = ( x1, x2, ... , xn ) , Y = ( y1, y2, ... , yn ) .

Векторы X и Y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметрами приращения.

Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.

В случае когда параметры приращения равны 1, используется развернутый цикл с шагом 5.

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

    real av11r_c (integer *n, real *sx, integer *incx, real *sy, integer *incy,
            integer *ierr)

Параметры

n - размерность векторов (тип: целый);
sx, sy - вещественные одномерные массивы длины n * | incx | и n * | incy | соответственно, содержащие заданные векторы;
         incx -
         incy  
параметры приращения, задающие расположение векторов в массивах sx и sy соответственно (тип: целый);
ierr - целая переменная, указывающая характер ошибки, при этом:
ierr=65 - когда n ≤ 0;
ierr=66 - когда в процессе счета произошло переполнение центрального процессора.

Версии

av11d_c - вычисление скалярного произведения вещественных векторов, заданных с удвоенной точностью;
av11c_c - вычисление скалярного произведения комплексных векторов по формуле:
(x, y) = x1 y*1 + x2 y*2 +... + xn y*n
где " * " - знак комплексного сопряжения.

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

utav10_c - подпрограмма выдачи диагностических сообщений при работе подпрограмм av11r_c и av11c_c.
utav11_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы av11d_c.

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

 

В функции av11d_c одномерные массивы, содержащие заданные векторы, обозначены dx и dy и имеют тип double.

В функции av11c_c одномерные массивы, содержащие заданные векторы, обозначены cx и cy и имеют тип complex.

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

int main(void)
{
    /* Initialized data */
    static float sx[11] = { 1.f,2.f,2.f,2.f,3.f,2.f,4.f,2.f,5.f,2.f,6.f };
    static float sy[11] = { 1.f,2.f,2.f,2.f,3.f,2.f,4.f,2.f,5.f,2.f,6.f };

    /* Local variables */
    extern float av11r_c(int *, float *, int *, float *, int *, int *);
    static int incx, incy, ierr, n;
    static float r11;

    n = 6;
    incy = 2;
    incx = 2;
    r11 = (float)av11r_c(&n, sx, &incx, sy, &incy, &ierr);

    printf("\n  %10.4e \n", r11);
    printf("\n  %5i \n", ierr);
    return 0;
} /* main */


Результаты:    r11  =  91.0 ,    ierr  =  0