11 template<
typename ElementType>
24 m_x{x}, m_y{y}, m_z{z} { }
28 return { L.m_y * R.m_z - L.m_z * R.m_y,
29 L.m_z * R.m_x - L.m_x * R.m_z,
30 L.m_x * R.m_y - L.m_y * R.m_x };
35 os <<
"< " << v.m_x <<
", " << v.m_y <<
", " << v.m_z <<
" >";
60template<
typename Policy>
63 std::vector<fcp::vector_3d<float>> points;
64 points.reserve(element_count);
66 auto generator = tpf::chrono_random::random_generator<float>(-10, +10);
70 for(
size_t i = 0; i < element_count; ++i)
71 points.emplace_back(generator(), generator(), generator());
73 for(
size_t i = 0; i < test_count; ++i)
77 std::transform(policy, points.begin(), points.end(), points.begin(),
78 [&r](
const auto& l){ return l * r; });
86 size_t element_count = 100'000'000;
88 stream <<
"Sequential - \n";
94 stream <<
"Parallel Vectorized - \n";
void test_vector_operation()
void performance_test(Policy policy, size_t test_count, size_t element_count)
vector_3d(element_type x, element_type y, element_type z)
friend std::ostream & operator<<(std::ostream &os, const vector_3d &v)
friend vector_3d operator*(const vector_3d &L, const vector_3d &R)
std::string elapsed_time(bool bReset=true, TimeUnit dummy_time=TimeUnit{}) const
Stream output operators << are implemented.