Текст подпрограммы и версий
av15r_c.zip  av15d_c.zip  av15c_c.zip 
Тексты тестовых примеров
tav15r_c.zip  tav15d_c.zip  tav15c_c.zip 

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

Назначение

Умножение вектора на скаляр.

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

Подпрограмма av15r_c выполняет умножение вектора на скаляр по формуле:

             AX  =  ( AX1, AX2, ... , AXn ) 

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

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

    int av15r_c (integer *n, real *sa, real *sx, integer *incx,
            integer *ierr)

Параметры

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

Версии

av15d_c - вычисление произведения вектора, заданного с двойной точностью, на скаляр.
av15c_c - вычисление произведения комплексного вектора на скаляр.

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

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

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

 

В подпрограмме av15d_c одномерный массив обозначен dx и имеет тип double.

В подпрограмме av15c_c одномерный массив обозначен cx и имеет тип complex.

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

int main(void)
{
    /* Initialized data */
    static float sx[3] = { 1.f,1.f,1.f };

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

    n = 3;
    sa = 2.f;
    incx = 1;
    ierr = 0;
    av15r_c(&n, &sa, sx, &incx, &ierr);

    printf("\n  %10.4e %10.4e %10.4e \n", sx[0], sx[1], sx[2]);
    printf("\n  %5i \n", ierr);
    return 0;
} /* main */


Результаты:     sx  =  (2.0, 2.0, 2.0) ,   ierr  =  0