|
Текст подпрограммы и версий sfg1r_c.zip sfg1d_c.zip |
Тексты тестовых примеров tsfg1r_c.zip tsfg1d_c.zip |
Вычисление факториала натурального числа.
Подпрограмма - функция sfg1r_c вычисляет факториал натурального числа N! = 1 * 2 * 3 ...* N непосредственным умножением, если N ≤ 32, и по формуле
N! = e ln Г(N+1) ,
если N > 32, где Г (N + 1) - значение гамма - функции от N + 1. Значение 0! полагается равным 1 .
real sfg1r_c (integer *n)
Параметры
| n - | заданное значение натурального числа, для которого необходимо вычислить факториал (тип: целый). |
Версии
| sfg1d_c - | вычисление факториала натурального числа в режиме удвоенной точности; при этом функция sfg1d_c должна быть описана как double. |
Вызываемые подпрограммы
|
sf66r_c - sf66d_c | вычисление натурального логарифма гамма - функции Г (x) вещественного аргумента в режимах одинарной и удвоенной точности; используются в подпрограммах - функциях sfg1r_c и sfg1d_c соответственно. |
Замечания по использованию
|
В подпрограммах - функциях sfg1r_c и sfg1d_c возможны остановы по переполнению арифметического устройства, если требуемое значение n! превосходит максимальное представимое число на используемой машине. |
int main(void)
{
/* Local variables */
extern float sfg1r_c(int *);
static int n;
static float res;
n = 5;
res = (float)sfg1r_c(&n);
printf("\n %16.7e \n",res);
return 0;
} /* main */
Результат: res = 120