Текст подпрограммы и версий
av17r_c.zip  av17d_c.zip  av17c_c.zip 
Тексты тестовых примеров
tav17r_c.zip  tav17d_c.zip  tav17c_c.zip 

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

Назначение

Пересылка вектора на место другого вектора.

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

Подпрограмма av17r_c пересылает компоненты  n - мерного вектора  x  на место компонент  n - мерного вектора  y :

          y  =  ( x1, x2, ..., xn ) 

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

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

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

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

    int av17r_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 .

Версии

av17d_c - пересылает один вещественный вектор в другой, когда оба вектора заданы с удвоенной точностью.
av17c_c - пересылка одного комплексного вектора в другой.

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

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

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

 

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

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

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

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

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

    n = 4;
    incx = 2;
    incy = 2;
    ierr = 0;
    av17r_c(&n, sx, &incx, sy, &incy, &ierr);

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


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