Текст подпрограммы и версий
sf22r_c.zip  sf22d_c.zip 
Тексты тестовых примеров
tsf22r_c.zip  tsf22d_c.zip 

Функция:  sf22r_c

Назначение

Вычисление значений бета-функции.

Математическое описание

Функция 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