blitz  Version 0.9
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
chisquare.h
Go to the documentation of this file.
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 
18 BZ_NAMESPACE(ranlib)
19 
20 template<typename T = double, typename IRNG = defaultIRNG,
21  typename stateTag = defaultState>
22 class ChiSquare : public Gamma<T,IRNG,stateTag>
23 {
24 public:
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;
38  }
39 
40  T random()
41  {
42  return 2.0 * sgamma();
43  }
44 
45 protected:
46  T sgamma()
47  {
49  }
50 
51  T df;
52 };
53 
55 
56 #endif // BZ_RANDOM_CHISQUARE