Текст подпрограммы и версий sfg1r_p.zip sfg1e_p.zip |
Тексты тестовых примеров tsfg1r_p.zip tsfg1e_p.zip |
Вычисление факториала натурального числа.
Подпрограмма - функция SFG1R вычисляет факториал натурального числа N! = 1 * 2 * 3 ...* N непосредственным умножением, если N ≤ 32, и по формуле
N! = e ln Г(N+1) ,
если N > 32, где Г (N + 1) - значение гамма - функции от N + 1. Значение 0! полагается равным 1 .
function SFG1R(N :Integer): Real;
Параметры
N - | заданное значение натурального числа, для которого необходимо вычислить факториал (тип: целый). |
Версии
SFG1E - | вычисление факториала натурального числа в режиме расширенной (Extended) точности; при этом функция SFG1E должна быть описана как Extended. |
Вызываемые подпрограммы
SF66R - SF66E | вычисление натурального логарифма гамма - функции Г (x) вещественного аргумента в режимах одинарной и расширенной (Extended) точности; используются в подпрограммах - функциях SFG1R и SFG1E соответственно. |
Замечания по использованию
В подпрограммах - функциях SFG1R и SFG1E возможны остановы по переполнению арифметического устройства, если требуемое значение N! превосходит максимальное представимое число на используемой машине. |
Unit tsfg1r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, SFG1R_p; function tsfg1r: String; implementation function tsfg1r: String; var N :Integer; RES :Real; begin Result := ''; { результат функции } N := 5; RES := SFG1R(N); Result := Result + Format(' %16.7f ',[RES]) + #$0D#$0A; UtRes('tsfg1r',Result); { вывод результатов в файл tsfg1r.res } exit; end; end. Результат: RES = 120