trajopt
 All Classes Namespaces Files Functions Variables Typedefs Pages
sco_common.hpp
1 #pragma once
2 #include <vector>
3 #include <cmath>
4 #include <algorithm>
5 
6 namespace sco {
7 
8 using std::vector;
9 typedef vector<double> DblVec;
10 typedef vector<unsigned char> BoolVec;
11 
12 inline double vecSum(const DblVec& v) {
13  double out = 0;
14  for (int i=0; i < v.size(); ++i) out += v[i];
15  return out;
16 }
17 inline double vecAbsSum(const DblVec& v) {
18  double out = 0;
19  for (int i=0; i < v.size(); ++i) out += fabs(v[i]);
20  return out;
21 }
22 inline double pospart(double x) {
23  return (x > 0) ? x : 0;
24 }
25 inline double sq(double x) {
26  return x*x;
27 }
28 inline double vecHingeSum(const DblVec& v) {
29  double out = 0;
30  for (int i=0; i < v.size(); ++i) out += pospart(v[i]);
31  return out;
32 }
33 inline double vecMax(const DblVec& v) {
34  return *std::max_element(v.begin(), v.end());
35 }
36 inline double vecDot(const DblVec& a, const DblVec& b) {
37  assert(a.size() == b.size());
38  double out=0;
39  for (int i=0; i < a.size(); ++i) out += a[i]*b[i];
40  return out;
41 }
42 
43 
44 
45 }
46