summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-01-30 14:10:26 -0500
committerErik Schnetter <schnetter@gmail.com>2013-01-30 14:10:26 -0500
commit4855b26cecf1f26b3e7dfbbdd8d7f6b002bbcff6 (patch)
tree6ac452cc122a7ab7e7b29d201505351092ca5368
parentd6d3eac45900ce0e445085474d04cd2212a9fbde (diff)
downloadvecmathlib-4855b26cecf1f26b3e7dfbbdd8d7f6b002bbcff6.zip
vecmathlib-4855b26cecf1f26b3e7dfbbdd8d7f6b002bbcff6.tar.gz
Benchmark std:: functions as well
-rw-r--r--bench.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/bench.cc b/bench.cc
index b78ecb0..4d56a95 100644
--- a/bench.cc
+++ b/bench.cc
@@ -49,6 +49,37 @@ double measure_tick()
+template<typename T>
+struct pseudovec {
+ T v;
+ static int const size = 1;
+ static char const* name()
+ {
+ if (typeid(T) == typeid(float)) return "float";
+ else if (typeid(T) == typeid(double)) return "double";
+ return typeid(T).name();
+ }
+ pseudovec() {}
+ pseudovec(T const& w): v(w) {}
+ pseudovec& set_elt(int, T const& w) { v=w; return *this; }
+ T operator[] (int) const { return v; }
+ pseudovec& operator+=(pseudovec const& x) { v+=x.v; return *this; }
+};
+template<typename T>
+pseudovec<T> atan(pseudovec<T> const& x) { return std::atan(x.v); }
+template<typename T>
+pseudovec<T> cos(pseudovec<T> const& x) { return std::cos(x.v); }
+template<typename T>
+pseudovec<T> exp(pseudovec<T> const& x) { return std::exp(x.v); }
+template<typename T>
+pseudovec<T> log(pseudovec<T> const& x) { return std::log(x.v); }
+template<typename T>
+pseudovec<T> sin(pseudovec<T> const& x) { return std::sin(x.v); }
+template<typename T>
+pseudovec<T> sqrt(pseudovec<T> const& x) { return std::sqrt(x.v); }
+
+
+
double global_result = 0.0;
template<typename realvec_t>
void save_result(realvec_t result)
@@ -152,6 +183,7 @@ int main(int argc, char** argv)
cout << "Benchmarking math functions:\n"
<< "\n";
+ bench<pseudovec<float>>();
#ifdef VECMATHLIB_HAVE_VEC_FLOAT_1
bench<realvec<float,1>>();
#endif
@@ -164,6 +196,7 @@ int main(int argc, char** argv)
cout << "\n";
+ bench<pseudovec<double>>();
#ifdef VECMATHLIB_HAVE_VEC_DOUBLE_1
bench<realvec<double,1>>();
#endif
OpenPOWER on IntegriCloud