예제 #1
0
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;  
}
예제 #2
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();
}
예제 #3
0
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));
  }