|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/av_htm_c/av11r_c.htm
Дата изменения: Fri Dec 4 12:36:54 2015 Дата индексирования: Sun Apr 10 02:21:01 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий av11r_c.zip av11d_c.zip av11c_c.zip |
Тексты тестовых примеров tav11r_c.zip tav11d_c.zip tav11c_c.zip |
Вычисление скалярного произведения двух вещественных векторов.
av11r_c вычисляет скалярное произведение двух n - мерных вещественных векторов
(X, Y) = x1 y1 + x2 y2 +...+ xn yn
где X = ( x1, x2, ... , xn ) , Y = ( y1, y2, ... , yn ) .
Векторы X и Y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметрами приращения.
Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.
В случае когда параметры приращения равны 1, используется развернутый цикл с шагом 5.
real av11r_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; |
| ierr=66 - | когда в процессе счета произошло переполнение центрального процессора. |
Версии
| av11d_c - | вычисление скалярного произведения вещественных векторов, заданных с удвоенной точностью; |
| av11c_c - |
вычисление скалярного произведения комплексных
векторов по формуле: (x, y) = x1 y*1 + x2 y*2 +... + xn y*n где " * " - знак комплексного сопряжения. |
Вызываемые подпрограммы
| utav10_c - | подпрограмма выдачи диагностических сообщений при работе подпрограмм av11r_c и av11c_c. |
| utav11_c - | подпрограмма выдачи диагностических сообщений при работе подпрограммы av11d_c. |
Замечания по использованию
|
В функции av11d_c одномерные массивы, содержащие заданные векторы, обозначены dx и dy и имеют тип double. В функции av11c_c одномерные массивы, содержащие заданные векторы, обозначены cx и cy и имеют тип complex. |
int main(void)
{
/* Initialized data */
static float sx[11] = { 1.f,2.f,2.f,2.f,3.f,2.f,4.f,2.f,5.f,2.f,6.f };
static float sy[11] = { 1.f,2.f,2.f,2.f,3.f,2.f,4.f,2.f,5.f,2.f,6.f };
/* Local variables */
extern float av11r_c(int *, float *, int *, float *, int *, int *);
static int incx, incy, ierr, n;
static float r11;
n = 6;
incy = 2;
incx = 2;
r11 = (float)av11r_c(&n, sx, &incx, sy, &incy, &ierr);
printf("\n %10.4e \n", r11);
printf("\n %5i \n", ierr);
return 0;
} /* main */
Результаты: r11 = 91.0 , ierr = 0