NEURON
HypGeom.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
#pragma once
19
20
#include "
Random.h
"
21
22
class
HyperGeometric
:
public
Random
{
23
protected
:
24
double
pMean
;
25
double
pVariance
;
26
double
pP
;
27
void
setState
();
28
29
public
:
30
HyperGeometric
(
double
mean
,
double
variance
,
RNG
*gen);
31
32
double
mean
();
33
double
mean
(
double
x);
34
double
variance
();
35
double
variance
(
double
x);
36
37
virtual
double
operator()
();
38
};
39
40
41
inline
void
HyperGeometric::setState
() {
42
double
z =
pVariance
/ (
pMean
*
pMean
);
43
pP
= 0.5 * (1.0 -
sqrt
((z - 1.0) / ( z + 1.0 )));
44
}
45
46
inline
HyperGeometric::HyperGeometric
(
double
mean,
double
variance,
RNG
*gen)
47
:
Random
(gen) {
48
pMean
=
mean
;
pVariance
=
variance
;
49
setState
();
50
}
51
52
inline
double
HyperGeometric::mean
() {
return
pMean
; };
53
54
inline
double
HyperGeometric::mean
(
double
x) {
55
double
t
=
pMean
;
pMean
= x;
56
setState
();
return
t
;
57
}
58
59
inline
double
HyperGeometric::variance
() {
return
pVariance
; }
60
61
inline
double
HyperGeometric::variance
(
double
x) {
62
double
t
=
pVariance
;
pVariance
= x;
63
setState
();
return
t
;
64
}
Random.h
HyperGeometric
Definition:
HypGeom.h:22
HyperGeometric::pVariance
double pVariance
Definition:
HypGeom.h:25
HyperGeometric::HyperGeometric
HyperGeometric(double mean, double variance, RNG *gen)
Definition:
HypGeom.h:46
HyperGeometric::variance
double variance()
Definition:
HypGeom.h:59
HyperGeometric::pP
double pP
Definition:
HypGeom.h:26
HyperGeometric::pMean
double pMean
Definition:
HypGeom.h:24
HyperGeometric::operator()
virtual double operator()()
Definition:
HypGeom.cpp:24
HyperGeometric::mean
double mean()
Definition:
HypGeom.h:52
HyperGeometric::setState
void setState()
Definition:
HypGeom.h:41
RNG
Definition:
RNG.h:5
Random
Definition:
Random.h:24
sqrt
sqrt
Definition:
extdef.h:3
coreneuron::t
double t
Definition:
register_mech.cpp:23
src
gnu
HypGeom.h