/***********************************************************/
/*                   Gamma distribution                    */
/***********************************************************/

#ifndef __GAMMA_H__                    /* To prevent redefinition           */

#define ENTRY   extern
#define LOCAL   static

class GammaDF {
    public:
       GammaDF(double shape, double scale=1);
       double value(double x);    // Функция распределения Gamma(x|shape,scale)
       double inv(double p);      // Обратная функция: Gamma(x|shape,scale)=p
    private:
       double a, shape, scale, lga;
       double fraction(double x);
       double series(double x);
 };

#define __GAMMA_H__                    /* Prevents redefinition             */
#endif                                 /* Ends #ifndef __GAMMA_H__          */