Текст подпрограммы и версий
sf77r_c.zip 
Тексты тестовых примеров
tsf77r_c.zip 

Подпрограмма:  sf77r_c

Назначение

Вычисление обратной функции треугольного распределения вероятностей.

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

sf77r_c вычисляет значение  x такое, что  F (x, G1, G2_c) = P, где   F (x, G1, G2) - функция треугольного распределения вероятностей:

                            x
F(x, G1, G2) = 2 ∫  ( ( 1/|G1 - G2| ) - ( |G1 + G2 - 2Z|/(G1 - G2)2 ) ) dz ,
                        min(G1, G2) 
            min(G1, G2) ≤ x ≤ max(G1,G2) 

Справочник по специальным функциям. Под ред. M.Абрамовица, И.Стеган. M.: "Hаука", 1979.

Использование

    int sf77r_c (real *p, real *g1, real *g2, real *x,
            integer *ierr)

Параметры

p - заданное значение аргумента (тип: вещественный);
g1, g2 - параметры треугольного распределения (границы интервала, на котоpом сосредоточено распределение) (тип: вещественный);
x - вещественная переменная, содержащая вычисленное значение функции;
ierr - целая переменная, служащая для сообщения об ошибках; при этом:
ierr=66 - когда  p < 0 либо  p > 1; значение  x полагается равным нулю.

Версии: нет

Вызываемые подпрограммы

utsf16_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf77r_c.

Замечания по использованию

  Границы интервала  g1, g2 допустимо задавать в любом порядке (т.е.  g2 можно задавать как больше, так и меньше  g1).

Пример использования

int main(void)
{
    /* Local variables */
    extern int sf77r_c(float *, float *, float *, float *, int *);
    static float x;
    static int ierr;
    static float c_b1 = .5f;
    static float c_b2 = 0.f;
    static float c_b3 = 2.f;

    sf77r_c(&c_b1, &c_b2, &c_b3, &x, &ierr);

    printf("\n %16.7e %5i \n",x,ierr);
    return 0;
} /* main */


Результаты:    x  =  1.0 ,    ierr  =  0