Fleet
0.0.9
Inference in the LOT
src
Statistics
MedianFAME.h
Go to the documentation of this file.
1
#pragma once
2
3
15
template
<
typename
T>
16
class
MedianFAME
{
17
public
:
18
19
T
M
;
20
size_t
n
;
21
T
step
;
22
23
MedianFAME
() : M(0.0), n(0), step(
NaN
) {
24
}
25
26
T
median
()
const
{
27
if
(n == 0)
28
return
NaN
;
29
else
30
return
M
;
31
}
32
33
void
add
(T x) {
34
35
if
(n == 0) {
36
M = x;
37
step = sqrt(abs(x));
// seems bad to initialize at x b/c then we start with giant sign swings; sqrt has a nice aesthetic
38
}
39
else
{
40
41
if
(x > M) {
42
M +=
step
;
43
}
44
else
if
(x <= M) {
45
M -=
step
;
46
}
47
48
if
(abs(x-M) < step) {
49
step = step/2.0;
50
}
51
}
52
++
n
;
53
}
54
void
operator<<
(T x) {
add
(x);}
55
56
57
};
58
MedianFAME::step
T step
Definition:
MedianFAME.h:21
MedianFAME::add
void add(T x)
Definition:
MedianFAME.h:33
MedianFAME::MedianFAME
MedianFAME()
Definition:
MedianFAME.h:23
MedianFAME::operator<<
void operator<<(T x)
Definition:
MedianFAME.h:54
MedianFAME::n
size_t n
Definition:
MedianFAME.h:20
MedianFAME::median
T median() const
Definition:
MedianFAME.h:26
MedianFAME::M
T M
Definition:
MedianFAME.h:19
MedianFAME
Definition:
MedianFAME.h:16
NaN
constexpr double NaN
Definition:
Numerics.h:21
Generated by
1.8.13