Текст подпрограммы и версий sf31r_p.zip , sf31e_p.zip |
Тексты тестовых примеров tsf31r_p.zip , tsf31e_p.zip |
Вычисление значений интегрального косинуса.
Функция SF31R вычисляет значение интегрального косинуса
x Ci (x) = ∫ cos t / t dt ∞
для вещественных значений аргумента x.
J.F.Hart, E.W.Cheney, C.L.Lawson, Computer Approximations, Wiley, New York, 1968.
function SF31R(X :Real; var IERR :Integer): Real;
Параметры
X - | заданное значение аргумента x (тип: вещественный); |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом: |
IERR=65 - | когда аргумент принимает значение меньшее или pавное 0.; значение функции полагается равным 3.4E38. |
Версии
SF31E - | вычисление значений интегрального косинуса с расширенной (Extended) точностью. |
Вызываемые подпрограммы
UTSF10 - | подпрограмма выдачи диагностических сообщений при работе функции SF31R. |
UTSF11 - | подпрограмма выдачи диагностических сообщений при работе функции SF31E. |
Замечания по использованию
Для функции SF31E параметр X имеет тип Extended. Если значение аргумента X меньше или pавно 0, значение IERR полагается равным 65, а значение функции равным 1.7E308. |
Unit tsf31r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, SF31R_p; function tsf31r: String; implementation function tsf31r: String; var IERR :Integer; X,Y :Real; begin Result := ''; { результат функции } X := 3.141592653589/2; Y := SF31R(X,IERR); Result := Result + Format('%s',[' X=']); Result := Result + Format('%20.16f ',[X]); Result := Result + Format('%s',[' Y=']); Result := Result + Format('%20.16f ',[Y]) + #$0D#$0A; Result := Result + Format('%s',[' IERR=']); Result := Result + Format('%5d ',[IERR]) + #$0D#$0A; UtRes('tsf31r',Result); { вывод результатов в файл tsf31r.res } exit; end; end. Результаты: Y = 0.472000651432, IERR = 0