int main(int argc, char **argv){ unsigned int runs = 400; seed_rand(); std::vector<double> xvalues(runs), yvalues(runs), zvalues(runs); for ( unsigned int i = 0; i < runs ; i++ ) { xvalues[i] = 1.0 * ((double) rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX; yvalues[i] = 1.0 * ((double) rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX; zvalues[i] = 1.0 * ((double) rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX; } for ( unsigned int i = 0; i < runs ; i++ ) { btMatrix3x3 mat; btQuaternion q_baseline(xvalues[i],yvalues[i],zvalues[i]); mat.setRotation(q_baseline); btQuaternion q_from_m; mat.getRotation(q_from_m); std::printf("%f, angle between quaternions\n", q_from_m.angle(q_baseline)); } return 0; }
int hpx_main() { // lets say we have two vectors that simulate.. 10007D std::vector<double> xvalues(10007); std::vector<double> yvalues(10007); std::fill(boost::begin(xvalues), boost::end(xvalues), 1.0); std::fill(boost::begin(yvalues), boost::end(yvalues), 1.0); double result = hpx::parallel::transform_reduce( hpx::parallel::par, boost::counting_iterator<size_t>(0), boost::counting_iterator<size_t>(10007), [&xvalues, &yvalues](size_t i) { return xvalues[i] * yvalues[i]; }, 0.0, std::plus<double>() ); // print the result hpx::cout << result << hpx::endl; return hpx::finalize(); }
int main(int argc, char **argv){ unsigned int runs = 400; seed_rand(); std::vector<double> xvalues(runs), yvalues(runs), zvalues(runs); for ( unsigned int i = 0; i < runs ; i++ ) { xvalues[i] = 1.0 * ((double) rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX; yvalues[i] = 1.0 * ((double) rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX; zvalues[i] = 1.0 * ((double) rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX; } //Useful Operator Overload for ( unsigned int i = 0; i < runs ; i++ ) { btTransform transform(btQuaternion(0,0,0), btVector3(xvalues[i],yvalues[i],zvalues[i])); btQuaternion initial(xvalues[i],yvalues[i],zvalues[i]); btQuaternion final(xvalues[i],yvalues[i],zvalues[i]); final = transform * initial; std::printf("Useful Operator Overload: %f, angle between quaternions\n", initial.angle(final)); }