|
Текст подпрограммы и версий av17r_p.zip av17e_p.zip av17c_p.zip |
Тексты тестовых примеров tav17r_p.zip tav17e_p.zip tav17c_p.zip |
Пересылка вектора на место другого вектора.
Подпрограмма AV17R пересылает компоненты n - мерного вектора x на место компонент n - мерного вектора y :
y = ( x1, x2, ..., xn )
Векторы x и y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти машины с некоторыми постоянными (для каждого вектора) интервалами, которые называются параметрами приращения.
Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.
В случае, когда параметры приращения равны 1, используется развернутый цикл с шагом 7.
procedure AV17R(N :Integer; var SX :Array of Real; INCX :Integer;
var SY :Array of Real; INCY :Integer;
var IERR :Integer);
Параметры
| N - | размерность векторов (тип: целый); |
| SX, SY - | вещественные одномерные массивы длиной N * | INСХ | и N * | INСY | соответственно, содержащие заданные векторы; |
|
INCX - INCY | параметры приращения, задающие векторы в массивах SХ и SY соответственно (тип: целый); |
| IERR - | целая переменная, указывающая характер ошибки; при этом: |
| IЕRR=65 - | когда N ≤ 0 . |
Версии
| AV17E - | пересылает один вещественный вектор в другой, когда оба вектора заданы с расширенной (Extended) точностью. |
| AV17C - | пересылка одного комплексного вектора в другой. |
Вызываемые подпрограммы
| UTAV10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АV17R и АV17С. |
| UTAV11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АV17E. |
Замечания по использованию
|
В подпрограмме АV17E одномерные массивы, содержащие данные векторы, обозначаются DХ и DY и имеют тип Extended. В подпрограмме АV17С одномерные массивы, содержащие данные векторы, обозначаются СХ и СY и имеют тип Complex. |
Unit tAv17r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV17R_p;
function tAv17r: String;
implementation
function tAv17r: String;
var
N,INCX,INCY,IERR,J :Integer;
const
SX :Array [0..6] of Real = ( 1.0,2.0,1.0,2.0,1.0,2.0,1.0 );
SY :Array [0..6] of Real = ( 3.0,0.0,3.0,0.0,3.0,0.0,3.0 );
begin
Result := '';
N := 4;
INСХ := 2;
INCY := 2;
IERR := 0;
AV17R(N,SX,INCX,SY,INCY,IERR);
Result := Result + Format('%s',[' IERR=']);
Result := Result + Format('%2d',[IERR]);
Result := Result + Format('%s',[' SX=']);
Result := Result + #$0D#$0A;
for J:=1 to 7 do
begin
Result := Result + Format('%20.16f ',[SX[J-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',[' SY=']);
Result := Result + #$0D#$0A;
for J:=1 to 7 do
begin
Result := Result + Format('%20.16f ',[SY[J-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('tAv17r',Result); { вывод результатов в файл tAv17r.res }
exit;
end;
end.
Результаты: SY = (1., 0., 1., 0., 1., 0., 1.) , IERR = 0