Текст подпрограммы и версий av14r_c.zip av14d_c.zip av14c_c.zip |
Тексты тестовых примеров tav14r_c.zip tav14d_c.zip tav14c_c.zip |
Перемена местами в памяти ЭBM двух вещественных векторов.
Подпрограмма av14r_c меняет местами два вещественных n - мерных вектора:
X = ( x1 , x2 , ... , xn ) и Y = ( y1 , y2 , ... , yn )
Векторы X и Y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметрами приращения.
Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.
В случае, когда параметры приращения равны 1, используется развернутый цикл с шагом 3.
int av14r_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 . |
Версии
av14d_c - | перемена местами вещественных векторов, заданных с удвоенной точностью. |
av14c_c - | перемена местами двух комплексных векторов. |
Вызываемые подпрограммы
utav10_c - | подпрограмма выдачи диагностических сообщений при работе подпрограмм av14r_c и av14c_c. |
utav11_c - | подпрограмма выдачи диагностических сообщений при работе подпрограммы av14d_c. |
Замечания по использованию
В подпрограмме av14d_c одномерные массивы, содержащие заданные векторы, обозначены dx и dy и имеют тип double. В подпрограмме av14c_c одномерные массивы, содержащие заданные векторы, обозначены cx и cy и имеют тип complex. |
int main(void) { /* Initialized data */ static float sx[11] = { 1.f,0.f,1.f,0.f,1.f,0.f,1.f,0.f,1.f,0.f,1.f }; static float sy[11] = { 2.f,0.f,2.f,0.f,2.f,0.f,2.f,0.f,2.f,0.f,2.f }; /* Local variables */ extern int av14r_c(int *, float *, int *, float *, int *, int *); static int incx, incy, ierr, j, n; n = 6; incx = 2; incy = 2; ierr = 0; av14r_c(&n, sx, &incx, sy, &incy, &ierr); for (j = 1; j <= 11; ++j) { printf("\n %6.2f \n", sx[j-1]); } for (j = 1; j <= 11; ++j) { printf("\n %6.2f \n", sy[j-1]); } printf("\n %5i \n", ierr); return 0; } /* main */ Результаты: sx = 2., 0., 2., 0., 2., 0., 2., 0., 2., 0., 2. sy = 1., 0., 1., 0., 1., 0., 1., 0., 1., 0., 1. ierr = 0