A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
src
stats
model
average.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2009 IITP RAS
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Authors: Pavel Boyko <boyko@iitp.ru>
19
* Corrections and extensions: Timo Bingmann <tbns@idlebox.net>
20
*/
21
22
#ifndef AVERAGE_H
23
#define AVERAGE_H
24
#include <cmath>
25
#include <ostream>
26
#include <limits>
27
#include <stdint.h>
28
#include "ns3/basic-data-calculators.h"
29
30
namespace
ns3
{
31
39
template
<
typename
T =
double
>
40
class
Average
41
{
42
public
:
43
Average
()
44
:
m_size
(0),
m_min
(
std
::numeric_limits<T>::
max
()),
m_max
(0)
45
{
46
}
47
49
void
Update
(T
const
&
x
)
50
{
51
// Give the variance calculator the next value.
52
m_varianceCalculator
.
Update
(
x
);
53
54
m_min
=
std::min
(
x
,
m_min
);
55
m_max
=
std::max
(
x
,
m_max
);
56
m_size
++;
57
}
59
void
Reset
()
60
{
61
m_varianceCalculator
.
Reset
();
62
63
m_size
= 0;
64
m_min
=
std::numeric_limits<T>::max
();
65
m_max
= 0;
66
}
67
68
// Sample statistics
70
uint32_t
Count
()
const
{
return
m_size
; }
72
T
Min
()
const
{
return
m_min
; }
74
T
Max
()
const
{
return
m_max
; }
76
double
Avg
()
const
{
return
m_varianceCalculator
.
getMean
();}
78
double
Mean
()
const
{
return
Avg
(); }
80
double
Var
()
const
{
return
m_varianceCalculator
.
getVariance
();}
82
double
Stddev
()
const
{
return
std::sqrt (
Var
()); }
83
99
double
Error90
()
const
{
return
1.645 * std::sqrt (
Var
() /
Count
()); }
110
double
Error95
()
const
{
return
1.960 * std::sqrt (
Var
() /
Count
()); }
122
double
Error99
()
const
{
return
2.576 * std::sqrt (
Var
() /
Count
()); }
125
private
:
126
uint32_t
m_size
;
127
T
m_min
;
128
T
m_max
;
129
MinMaxAvgTotalCalculator<double>
m_varianceCalculator
;
130
};
131
133
template
<
typename
T>
134
std::ostream & operator<< (std::ostream & os, Average<T>
const
&
x
)
135
{
136
if
(
x
.Count () != 0)
137
os <<
x
.Avg () <<
" ("
<<
x
.Stddev () <<
") ["
<<
x
.Min () <<
", "
<<
x
.Max () <<
"]"
;
138
else
139
os <<
"NA"
;
// not available
140
return
os;
141
}
142
}
143
#endif
/* AVERAGE_H */
ns3::Average::Error95
double Error95() const
Margin of error of the mean for 95% confidence level.
Definition:
average.h:110
ns3::Average::Avg
double Avg() const
Sample average.
Definition:
average.h:76
min
#define min(a, b)
Definition:
80211b.c:42
ns3::Average::Max
T Max() const
Maximum.
Definition:
average.h:74
ns3::Average::m_min
T m_min
Minimum value observed.
Definition:
average.h:127
ns3::Average::Average
Average()
Definition:
average.h:43
ns3::MinMaxAvgTotalCalculator::getVariance
double getVariance() const
Returns the current variance.
Definition:
basic-data-calculators.h:101
std
STL namespace.
ns3::Average::Error90
double Error90() const
Margin of error of the mean for 90% confidence level.
Definition:
average.h:99
ns3::Average::Stddev
double Stddev() const
Standard deviation.
Definition:
average.h:82
ns3::Average::Var
double Var() const
Unbiased estimate of variance.
Definition:
average.h:80
ns3::Average::m_size
uint32_t m_size
Number of sampled data.
Definition:
average.h:126
max
#define max(a, b)
Definition:
80211b.c:43
ns3::MinMaxAvgTotalCalculator::Reset
void Reset()
Reinitializes all variables of MinMaxAvgTotalCalculator.
Definition:
basic-data-calculators.h:235
ns3::Average::m_max
T m_max
Maximum value observed.
Definition:
average.h:128
ns3::Average::Error99
double Error99() const
Margin of error of the mean for 99% confidence level.
Definition:
average.h:122
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::MinMaxAvgTotalCalculator< double >
ns3::Average::Reset
void Reset()
Reset statistics.
Definition:
average.h:59
ns3::MinMaxAvgTotalCalculator::Update
void Update(const T i)
Updates all variables of MinMaxAvgTotalCalculator.
Definition:
basic-data-calculators.h:175
ns3::Average
Simple average, min, max and std.
Definition:
average.h:40
ns3::Average::Min
T Min() const
Minimum.
Definition:
average.h:72
ns3::Average::m_varianceCalculator
MinMaxAvgTotalCalculator< double > m_varianceCalculator
Variance calculator.
Definition:
average.h:129
ns3::Average::Mean
double Mean() const
Estimate of mean, alias to Avg.
Definition:
average.h:78
ns3::MinMaxAvgTotalCalculator::getMean
double getMean() const
Returns the mean value.
Definition:
basic-data-calculators.h:91
ns3::Average::Count
uint32_t Count() const
Sample size.
Definition:
average.h:70
ns3::Average::Update
void Update(T const &x)
Add new sample.
Definition:
average.h:49
sample-rng-plot.x
list x
Definition:
sample-rng-plot.py:34
Generated on Wed Nov 7 2018 10:02:10 for ns-3 by
1.8.14