Текст подпрограммы и версий
av14r_p.zip  av14e_p.zip  av14c_p.zip 
Тексты тестовых примеров
tav14r_p.zip  tav14e_p.zip  tav14c_p.zip 

Подпрограмма:  AV14R (модуль AV14R_p)

Назначение

Перемена местами в памяти ЭВМ двух вещественных векторов.

Математическое описание

Подпрограмма AV14R меняет местами два вещественных n - мерных вектора:

     X = ( x1 , x2 , ... , xn )    и   Y = ( y1 , y2 , ... , yn ) 

Векторы X и Y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметрами приращения.

Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.

В случае, когда параметры приращения равны 1, используется развернутый цикл с шагом 3.

Использование

procedure AV14R(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 .

Версии

AV14E - перемена местами вещественных векторов, заданных с расширенной (Extended) точностью.
AV14C - перемена местами двух комплексных векторов.

Вызываемые подпрограммы

UTAV10 - подпрограмма выдачи диагностических сообщений при работе подпрограмм АV14R и АV14С.
UTAV11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы АV14E.

Замечания по использованию

 

В подпрограмме АV14E одномерные массивы, содержащие заданные векторы, обозначены DХ и DY и имеют тип Extended.

В подпрограмме АV14С одномерные массивы, содержащие заданные векторы, обозначены СХ и СY и имеют тип Complex.

Пример использования

Unit tAv14r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV14R_p;

function tAv14r: String;

implementation

function tAv14r: String;
var
N,INCX,INCY,IERR,J :Integer;
const
SX :Array [0..10] of Real = ( 1.0,0.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0 );
SY :Array [0..10] of Real = ( 2.0,0.0,2.0,0.0,2.0,0.0,2.0,0.0,2.0,0.0,2.0 );
begin
Result := '';
N := 6;
INСХ := 2;
INCY := 2;
IERR := 0;
AV14R(N,SX,INCX,SY,INCY,IERR);
Result := Result + Format('%s',['   SX=']);
Result := Result + #$0D#$0A;
for J:=1 to 11 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 11 do
begin
 Result := Result + Format('%20.16f ',[SY[J-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',['   IERR=']);
Result := Result + Format('%3d',[IERR]);
UtRes('tAv14r',Result);  { вывод результатов в файл tAv14r.res }
exit;
end;

end.

Результаты:

          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