source: XMLIO_V2/external/include/random/chisquare.h @ 80

Last change on this file since 80 was 80, checked in by ymipsl, 14 years ago

ajout lib externe

  • Property svn:eol-style set to native
File size: 988 bytes
Line 
1/*
2 * Chi^2 distribution
3 *
4 * This code has been adapted from RANDLIB.C 1.3, by
5 * Barry W. Brown, James Lovato, Kathy Russell, and John Venier.
6 * Code was originally by Ahrens and Dieter (see above).
7 *
8 * Adapter's notes:
9 */
10
11#ifndef BZ_RANDOM_CHISQUARE
12#define BZ_RANDOM_CHISQUARE
13
14#ifndef BZ_RANDOM_GAMMA
15 #include <random/gamma.h>
16#endif
17
18BZ_NAMESPACE(ranlib)
19
20template<typename T = double, typename IRNG = defaultIRNG, 
21    typename stateTag = defaultState>
22class ChiSquare : public Gamma<T,IRNG,stateTag>
23{
24public:
25    typedef T T_numtype;
26
27    ChiSquare(T df)
28      : Gamma<T,IRNG,stateTag>(df/2.0)
29    {
30        setDF(df);
31    }
32
33    void setDF(T _df)
34    {
35        BZPRECONDITION(_df > 0.0);
36        df = _df;
37        Gamma<T,IRNG,stateTag>::setMean(df/2.0);
38    }
39
40    T random()
41    {
42        return 2.0 * sgamma();
43    }
44
45protected:
46    T sgamma()
47    {
48        return Gamma<T,IRNG,stateTag>::random();
49    }
50
51    T df;
52};
53
54BZ_NAMESPACE_END
55
56#endif // BZ_RANDOM_CHISQUARE
Note: See TracBrowser for help on using the repository browser.