Текст подпрограммы и версий sf18r_p.zip , sf18e_p.zip |
Тексты тестовых примеров tsf18r_p.zip , tsf18e_p.zip |
Вычисление функций Кельвина первого порядка.
SF18R вычисляет функции Кельвина первого рода (ber1 (x) и bei1(x)) и второго рода (ker1 (x) и kei1 (x)) первого порядка.
J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.
procedure SF18R(X :Real; var BER1 :Real; var BEI1 :Real; var AKER1 :Real; var AKEI1 :Real; var IERR :Integer);
Параметры
X - | заданное значение аргумента x (тип: вещественный); |
BER1 - BEI1 AKER1 AKEI1 | вычисленные значения функций ber1 (x), bei1 (x), ker1 (x), kei1 (x) соответственно (тип :вещественный); |
IERR - | целая переменая, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
IERR= 1 - | когда значение аргумента меньше 0.; значения AKER1 и AKEI1 полагаются равными 3.4E38; |
IERR=66 - | когда абсолютное значение аргумента больше 57.58; значения BER1 и BEI1 полагаются равными 0.; в случае, когда аргумент неотрицателен, AKER1 и AKEI1 также полагаются равными 0., иначе AKER1 и AKEI1 полагаются равными 3.4E38. |
Версии
SF18E - | вычисление функций Кельвина первого порядка с расширенной (Extended) точностью. |
Вызываемые подпрограммы
SF17R - SF17E | подпрограммы вычисления производных функций Кельвина нулевого порядка с обычной и расширенной (Extended) точностью (используются в SF18R и SF18E). |
UTSF10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы SF18R. |
UTSF11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы SF18E. |
Замечания по использованию
Для подпрограммы SF18E параметры X, BER1, BEI1, AKER1 и AKEI1 имеют тип Extended и абсолютное значение аргумента не должно превосходить 2.04E03. При нарушении этого условия значение IERR полагается равным 66 и для отрицательного X значения AKER1 и AKEI1 полагаются pавными 1.7E308. При X = 0, BER1 = 0., BEI1 = 0., AKER1 = AKEI1 = - 3.4E38 (для SF18R) или - 1.7E308 (для SF18E). |
Unit tsf18r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, SF18R_p; function tsf18r: String; implementation function tsf18r: String; var IERR :Integer; X,BER1,BEI1,AKER1,AKEI1 :Real; begin Result := ''; { результат функции } X := 0.4; SF18R(X,BER1,BEI1,AKER1,AKEI1,IERR); Result := Result + Format(' %20.16f %20.16f %20.16f %20.16f ', [BER1,BEI1,AKER1,AKEI1]) + #$0D#$0A; Result := Result + Format('%5d ',[IERR]) + #$0D#$0A; UtRes('tsf18r',Result); { вывод результатов в файл tsf18r.res } exit; end; end. Результаты: BER1 = -0.144230864453, BEI1 = 0.138574135911, AKER1 = -1.88202405043, AKEI1 = -1.44430515029, IERR = 0