#include #include using namespace std; template struct vec_t { size_t const D = 2; typedef T scalar_t; typedef T impl_t; impl_t v[D]; static inline size_t size() { return D; } inline vec_t () { } inline vec_t (scalar_t const& a) { for (size_t d=0; d vec_t exp (vec_t const& x) { vec_t r; for (size_t d=0; d vec_t fabs (vec_t const& x) { vec_t r; for (size_t d=0; d vec_t fmax (vec_t const& x, vec_t const& y) { vec_t r; for (size_t d=0; d vec_t fmin (vec_t const& x, vec_t const& y) { vec_t r; for (size_t d=0; d vec_t ifthen (bool const b, vec_t const& x, vec_t const& y) { return b ? x : y; } vec_t log (vec_t const& x) { vec_t r; for (size_t d=0; d vec_t pow (vec_t const& x, typename vec_t::scalar_t const& a) { vec_t r; for (size_t d=0; d sqrt (vec_t const& x) { vec_t r; for (size_t d=0; d