|
Текст подпрограммы и версий av15r_c.zip av15d_c.zip av15c_c.zip |
Тексты тестовых примеров tav15r_c.zip tav15d_c.zip tav15c_c.zip |
Умножение вектора на скаляр.
Подпрограмма 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