mageec  0.1.0
MAchine Guided Energy Efficient Compilation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
vectormath.h
Go to the documentation of this file.
1 /* MAGEEC Vector Math Helper Functions
2  Copyright (C) 2013, 2014 Embecosm Limited and University of Bristol
3 
4  This file is part of MAGEEC.
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>. */
18 
19 #ifndef __MAGEEC__VECTORMATH_H_
20 #define __MAGEEC__VECTORMATH_H_
21 
22 #include <vector>
23 
28 template <class T>
29 static T vector_min (std::vector<T> a)
30 {
31  unsigned int size = a.size();
32  if (size == 0)
33  return 0;
34  if (size == 1)
35  return a[0];
36  T min_val = std::min(a[0], a[1]);
37  for (unsigned int i=2; i < size; i++)
38  min_val = std::min(min_val, a[i]);
39  return min_val;
40 }
41 
46 template <class T>
47 static T vector_max (std::vector<T> a)
48 {
49  unsigned int size = a.size();
50  if (size == 0)
51  return 0;
52  if (size == 1)
53  return a[0];
54  T min_val = std::max(a[0], a[1]);
55  for (unsigned int i=2; i < size; i++)
56  min_val = std::max(min_val, a[i]);
57  return min_val;
58 }
59 
64 template <class T>
65 static T vector_sum (std::vector<T> a)
66 {
67  unsigned int size = a.size();
68  if (size == 0)
69  return 0;
70  T total = a[0];
71  for (unsigned int i=1; i < size; i++)
72  total += a[i];
73  return total;
74 }
75 
76 #endif