NEURON
Weibull.h
Go to the documentation of this file.
1 // This may look like C code, but it is really -*- C++ -*-
2 /*
3 Copyright (C) 1988 Free Software Foundation
4  written by Dirk Grunwald (grunwald@cs.uiuc.edu)
5 
6 This file is part of the GNU C++ Library. This library is free
7 software; you can redistribute it and/or modify it under the terms of
8 the GNU Library General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your
10 option) any later version. This library is distributed in the hope
11 that it will be useful, but WITHOUT ANY WARRANTY; without even the
12 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13 PURPOSE. See the GNU Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
17 */
18 #ifndef _Weibull_h
19 #ifdef __GNUG__
20 //#pragma interface
21 #endif
22 #define _Weibull_h
23 
24 #include <Random.h>
25 
26 class Weibull: public Random {
27 protected:
28  double pAlpha;
29  double pInvAlpha;
30  double pBeta;
31 
32  void setState();
33 
34 public:
35  Weibull(double alpha, double beta, RNG *gen);
36 
37  double alpha();
38  double alpha(double x);
39 
40  double beta();
41  double beta(double x);
42 
43  virtual double operator()();
44 };
45 
46 
47 inline void Weibull::setState() {
48  pInvAlpha = 1.0 / pAlpha;
49 }
50 
51 inline Weibull::Weibull(double alpha, double beta, RNG *gen) : Random(gen)
52 {
53  pAlpha = alpha;
54  pBeta = beta;
55  setState();
56 }
57 
58 inline double Weibull::alpha() { return pAlpha; }
59 
60 inline double Weibull::alpha(double x) {
61  double tmp = pAlpha;
62  pAlpha = x;
63  setState();
64  return tmp;
65 }
66 
67 inline double Weibull::beta() { return pBeta; };
68 inline double Weibull::beta(double x) {
69  double tmp = pBeta;
70  pBeta = x;
71  return tmp;
72 };
73 
74 #endif
double pAlpha
Definition: Weibull.h:28
Definition: RNG.h:55
Definition: Random.h:32
double pBeta
Definition: Weibull.h:30
void setState()
Definition: Weibull.h:47
Weibull(double alpha, double beta, RNG *gen)
Definition: Weibull.h:51
double alpha()
Definition: Weibull.h:58
double beta()
Definition: Weibull.h:67
double pInvAlpha
Definition: Weibull.h:29
virtual double operator()()
Definition: Weibull.cpp:30