double test_dir2d_trig_method (void) { double x=0, y=0, theta; gsl_ran_dir_2d_trig_method (r_global, &x, &y); theta = atan2(x,y); return theta; }
void test_dir(void){ double x,y,z, nd[SIZE] = { 0,0,0,0 }; gsl_ran_dir_2d(rng, &x, &y); printf("gsl_ran_dir_2d\t[%.12f,%.12f]\n", x, y); gsl_ran_dir_2d_trig_method(rng, &x, &y); printf("gsl_ran_dir_2d_trig_method\t[%.12f,%.12f]\n", x, y); gsl_ran_dir_3d(rng, &x, &y, &z); printf("gsl_ran_dir_3d\t[%.12f,%.12f,%.12f]\n", x, y, z); /* perl needs to pass either outpdl or dims */ gsl_ran_dir_nd(rng, SIZE, nd); printf("gsl_ran_dir_nd\t%d\t[%.12f,%.12f,%.12f,%.12f]\n", SIZE, nd[0], nd[1], nd[2], nd[3]); }
CAMLprim value ml_gsl_ran_dir_2d_trig_method(value rng) { double x,y; gsl_ran_dir_2d_trig_method(Rng_val(rng), &x, &y); return copy_two_double(x, y); }