Текст подпрограммы и версий
av13r_c.zip  av13d_c.zip  av13c_c.zip 
Тексты тестовых примеров
tav13r_c.zip  tav13d_c.zip  tav13c_c.zip 

Подпрограмма:  av13r_c

Назначение

Умножение скаляра на вектор и сложение результата с другим вектором.

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

Подпрограмма av13r_c выполняет умножение скаляра на n - мерный вектор и прибавление к результату другого n - мерного вектора по формуле:

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

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

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

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

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

    int av13r_c (integer *n, real *sa, real *sx, integer *incx,
            real *sy, integer *incy, integer *ierr)

Параметры

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

Версии

av13d_c - векторы и скаляр заданы с удвоенной точностью.
av13c_c - векторы и скаляр заданы комплексными числами.

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

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

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

 

В подпрограмме av13d_c одномерные массивы, содержащие данные векторы и скаляр, обозначены dx, dy и da и имеют тип double.

В подпрограмме av13c_c одномерные массивы, содержащие заданные векторы и скаляр обозначены cx, cy и ca и имеют тип complex.

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

int main(void)
{
    /* Initialized data */

    static float sx[7] = { 1.f,1.f,1.f,1.f,1.f,1.f,1.f };
    static float sy[7] = { 2.f,2.f,2.f,2.f,2.f,2.f,2.f };

    /* Local variables */
    extern int av13r_c(int *, float *, float *, int *, float *, int *, int *);
    static int incx, incy, ierr, j, n;
    static float sa;

    n = 4;
    sa = 2.f;
    incx = 2;
    incy = 2;
    ierr = 0;
    av13r_c(&n, &sa, sx, &incx, sy, &incy, &ierr);

    for (j = 1; j <= 7; ++j) {
         printf("\n %12.4e \n", sx[j-1]);
    }
    for (j = 1; j <= 7; ++j) {
         printf("\n   %12.4e \n", sy[j-1]);
    }
    printf("\n  %5i \n", ierr);
    return 0;
} /* main */


Результаты:    sy = (4., 2., 4., 2., 4., 2., 4.) , ierr  =  0