Текст подпрограммы и версий av15r_p.zip av15e_p.zip av15c_p.zip |
Тексты тестовых примеров tav15r_p.zip tav15e_p.zip tav15c_p.zip |
Умножение вектора на скаляр.
Подпрограмма AV15R выполняет умножение вектора на скаляр по формуле:
AX = ( AX1, AX2, ... , AXn )
Вектор X не обязательно должен занимать последовательные слова памяти машины и может располагаться в памяти с некоторыми постоянными интервалами, которые называются параметром приращения. Этот параметр может быть меньше нуля, если обработка компонент вектора должна проводиться в обратном порядке. В случае, когда параметры приращения равны 1, используется развернутый цикл с шагом 5.
procedure AV15R(N :Integer; SA :Real; var SX :Array of Real; INCX :Integer; var IERR :Integer);
Параметры
N - | размерность вектора (тип: целый); |
SA - | скалярный множитель (тип: вещественный); |
SX - | вещественный одномерный массив длины N, содержащий заданный вектор; на выходе содержит результирующий вектор; |
INCX - | параметр приращения, задающий расположение вектора в массиве SХ (тип: целый); |
IERR - | целая переменная, указывающая характер ошибки; при этом: |
IЕRR=65 - | когда N ≤ 0 . |
Версии
AV15E - | вычисление произведения вектора, заданного с расширенной (Extended) точностью, на скаляр. |
AV15C - | вычисление произведения комплексного вектора на скаляр. |
Вызываемые подпрограммы
UTAV10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АV15R и АV15С. |
UTAV11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АV15E. |
Замечания по использованию
В подпрограмме АV15E одномерный массив обозначен DХ и имеет тип Extended. В подпрограмме АV15С одномерный массив обозначен СХ и имеет тип Complex. |
Unit TAV15R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, AV15R_p; function TAV15R: String; implementation function TAV15R: String; var N,INCX,IERR,J :Integer; SA :Real; const SX :Array [0..2] of Real = ( 1.0,1.0,1.0 ); begin Result := ''; N := 3; SA := 2.0; INСХ := 1; IERR := 0; AV15R(N,SA,SX,INCX,IERR); Result := Result + Format('%s',[' PEЗYЛЬTAT=']); Result := Result + #$0D#$0A; J := 1; WHILE ( J<=3 ) do begin Result := Result + Format('%20.16f',[SX[J-1]]) + #$0D#$0A; inc(J,1); end; Result := Result + #$0D#$0A; Result := Result + Format('%s',[' IERR=']); Result := Result + Format('%3d',[IERR]) + #$0D#$0A; UtRes('TAV15R',Result); { вывод результатов в файл TAV15R.res } exit; end; end. Результаты: SX = (2.0, 2.0, 2.0) , IERR = 0