Текст подпрограммы и версий sf22r_c.zip sf22d_c.zip |
Тексты тестовых примеров tsf22r_c.zip tsf22d_c.zip |
Вычисление значений бета-функции.
Функция sf22r_c вычисляет значение интегралов вида:
1 B (x, y) = ∫ t x - 1(1 - t)y - 1 dt 0
Бета-функция может быть представлена с помощью гама-функции
B (x, y) = Г(x)Г(y) / Г(x + y).
J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.
real sf22r_c (real *x, real *y, integer *ierr)
Параметры
x, y - | заданные значения аргументов x и y соответственно (тип: вещественный); |
ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом: |
ierr=65 - | когда значение одного из аргументов (x, y, x + y) pавно нулю или целому отрицательному числу; значение функции полагается равным 3.4e38; |
ierr=66 - | когда значение одного из аргументов (x, y или x + y) меньше чем - 20.4; значение функции полагается равным 3.4e38. |
Версии
sf22d_c - | вычисление значений бета - функции с повышенной точностью. |
Вызываемые подпрограммы
utsf10_c - | подпрограмма выдачи диагностических сообщений при работе функции sf22r_c. |
utsf11_c - | подпрограмма выдачи диагностических сообщений при работе функции sf22d_c. |
Замечания по использованию
Областью допустимых значений аргументов для значений аргументов sf22r_c является луч z ≥ - 20.4, z ≠ 0, - 1, - 2, ..., - 20, а для функции sf22d_c - z ≥ - 961.199, z ≠ 0, - 1, - 2, ..., - 961. kpоме того, для функции sf22d_c аргументы x и y имеют тип double и при нарушении области допустимых значений функция полагается равной 1.7e308. |
int main(void) { /* Local variables */ extern float sf22r_c(float *, float *, int *); static int ierr; static float x, y, y1; x = 1.5f; y = 2.9f; y1 = (float)sf22r_c(&x, &y, &ierr); printf("\n %16.7e %5i \n",y1, ierr); return 0; } /* main */ Результаты: y1 = 0.159770619769 , ierr = 0