Текст подпрограммы и версий av11r_p.zip av11e_p.zip av11c_p.zip |
Тексты тестовых примеров tav11r_p.zip tav11e_p.zip tav11c_p.zip |
Вычисление скалярного произведения двух вещественных векторов.
AV11R вычисляет скалярное произведение двух n - мерных вещественных векторов
(X, Y) = x1 y1 + x2 y2 +...+ xn yn
где X = ( x1, x2, ... , xn ) , Y = ( y1, y2, ... , yn ) .
Векторы X и Y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметрами приращения.
Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.
В случае когда параметры приращения равны 1, используется развернутый цикл с шагом 5.
function AV11R(N :Integer; var SX :Array of Real; INCX :Integer; var SY :Array of Real; INCY :Integer; var IERR :Integer): Real;
Параметры
N - | размерность векторов (тип: целый); |
SX, SY - | вещественные одномерные массивы длины N * | INСХ | и N * | INСY | соответственно, содержащие заданные векторы; |
INCX - INCY | параметры приращения, задающие расположение векторов в массивах SХ и SY соответственно (тип: целый); |
IERR - | целая переменная, указывающая характер ошибки, при этом: |
IЕRR=65 - | когда N ≤ 0; |
IЕRR=66 - | когда в процессе счета произошло переполнение центрального процессора. |
Версии
AV11E - | вычисление скалярного произведения вещественных векторов, заданных с расширенной (Extended) точностью. |
AV11C - |
вычисление скалярного произведения комплексных
векторов по формуле: (X, Y) = x1 y*1 + x2 y*2 +... + xn y*n где " * " - знак комплексного сопряжения. |
Вызываемые подпрограммы
UTAV10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АV11R и АV11С. |
UTAV11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АV11E. |
Замечания по использованию
В функции АV11E одномерные массивы, содержащие заданные векторы, обозначены DХ и DY и имеют тип Extended. В функции АV11С одномерные массивы, содержащие заданные векторы, обозначены СХ и СY и имеют тип Complex. |
Unit tAv11r_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, AV11R_p; function tAv11r: String; implementation function tAv11r: String; var N,INCY,INCX,IERR :Integer; R11 :Real; const SX :Array [0..10] of Real = ( 1.0,2.0,2.0,2.0,3.0,2.0,4.0,2.0,5.0,2.0,6.0 ); SY :Array [0..10] of Real = ( 1.0,2.0,2.0,2.0,3.0,2.0,4.0,2.0,5.0,2.0,6.0 ); begin Result := ''; N := 6; INCY := 2; INСХ := 2; R11 := AV11R(N,SX,INCX,SY,INCY,IERR); Result := Result + Format('%s',[' PEЗYЛЬTAT=']); Result := Result + Format('%20.16f',[R11]) + #$0D#$0A; Result := Result + Format('%s',[' IERR=']); Result := Result + Format('%3d',[IERR]); UtRes('tAv11r',Result); { вывод результатов в файл tAv11r.res } exit; end; end. Результаты: R11 = 91.0 , IERR = 0