limited volume meshing to boundary layer only
[engrid-github.git] / src / libengrid / statistics.h
blobf6ecc75b4bc68dd14ba7eb20b4f963fab6e952c6
1 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 // + +
3 // + This file is part of enGrid. +
4 // + +
5 // + Copyright 2008-2014 enGits GmbH +
6 // + +
7 // + enGrid is free software: you can redistribute it and/or modify +
8 // + it under the terms of the GNU General Public License as published by +
9 // + the Free Software Foundation, either version 3 of the License, or +
10 // + (at your option) any later version. +
11 // + +
12 // + enGrid is distributed in the hope that it will be useful, +
13 // + but WITHOUT ANY WARRANTY; without even the implied warranty of +
14 // + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +
15 // + GNU General Public License for more details. +
16 // + +
17 // + You should have received a copy of the GNU General Public License +
18 // + along with enGrid. If not, see <http://www.gnu.org/licenses/>. +
19 // + +
20 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
21 #ifndef STATISTICS_H
22 #define STATISTICS_H
24 namespace Statistics {
26 template <typename C>
27 typename C::value_type meanValue(const C &container)
29 typename C::value_type mean = typename C::value_type();
30 for (typename C::const_iterator i = container.begin(); i != container.end(); ++i) {
31 mean += *i;
33 mean /= container.size();
34 return mean;
37 template <typename C>
38 typename C::value_type standardDeviation(const C &container, typename C::value_type mean)
40 typename C::value_type sigma = typename C::value_type();
41 for (typename C::const_iterator i = container.begin(); i != container.end(); ++i) {
42 sigma += ((*i) - mean)*((*i) - mean);
44 sigma /= container.size();
45 sigma = sqrt(sigma);
46 return sigma;
49 template <typename C>
50 typename C::value_type standardDeviation(const C &container)
52 typename C::value_type mean = meanValue(container);
53 return standardDeviation(container, mean);
59 #endif // STATISTICS_H