static void test_8(void) { printf("Running %d iterations of test_INT32_QUAT_OF_RMAT\n", NB_ITER); #if SEED_RANDOM_FROM_TIME #pragma message "Seeding random from current time" time_t now; now = time(NULL); struct tm *ts; ts = localtime(&now); srandom(ts->tm_sec); #endif float max_err = 0.; float sum_err = 0.; int nb_err = 0; int i; for (i = 0; i < NB_ITER; i++) { struct FloatEulers eul; eul.phi = ((double)random() / (double)RAND_MAX - 0.5) * M_PI * 2.; eul.theta = ((double)random() / (double)RAND_MAX - 0.5) * M_PI * 2.; eul.psi = ((double)random() / (double)RAND_MAX - 0.5) * M_PI * 2.; float err = test_INT32_QUAT_OF_RMAT(&eul, FALSE); sum_err += err; if (err > max_err) { max_err = err; } if (err > .01) { nb_err++; printf("\nIteration %d with large error: %f\n", i, err); DISPLAY_FLOAT_EULERS_DEG("Eulers in deg", eul); test_INT32_QUAT_OF_RMAT(&eul, TRUE); printf("\n"); } } printf("Number of errors %d, average error %f, max error %f\n", nb_err, sum_err / NB_ITER, max_err); }
static void test_9(void) { struct FloatEulers eul; eul.phi = RadOfDeg(80.821376); eul.theta = RadOfDeg(44.227319); eul.psi = RadOfDeg(-134.047298); float err = test_INT32_QUAT_OF_RMAT(&eul, TRUE); }
static void test_8(void) { float max_err = 0.; float sum_err = 0.; int i; for (i=0; i<NB_ITER; i++) { struct FloatEulers eul; eul.phi = ((double)random()/(double)RAND_MAX - 0.5)*M_PI*2.; eul.theta = ((double)random()/(double)RAND_MAX - 0.5)*M_PI*2.; eul.psi = ((double)random()/(double)RAND_MAX - 0.5)*M_PI*2.; float err = test_INT32_QUAT_OF_RMAT(&eul, FALSE); sum_err += err; if (err > max_err) max_err = err; if (err > .01) { printf("%f\n", err); DISPLAY_FLOAT_EULERS_DEG("eul", eul); test_INT32_QUAT_OF_RMAT(&eul, TRUE); } } printf("err %f (%f)\n", sum_err/NB_ITER, max_err); }