Текст подпрограммы и версий av14r_p.zip av14e_p.zip av14c_p.zip |
Тексты тестовых примеров tav14r_p.zip tav14e_p.zip tav14c_p.zip |
Перемена местами в памяти ЭВМ двух вещественных векторов.
Подпрограмма 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