aboutsummaryrefslogtreecommitdiff
path: root/examples/generate-cone-vector.c
blob: 32566b46cefe642d1b435458ee1a6131429f5908 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <nd-random.h>

// Dimension of the vector to generate
#define DIMENSION 10
// Maximum angle from the axis of the cone
#define THETA_MAX M_PI/4

int main ()
{
  // Initialize random number generator.
  gsl_rng_env_setup();
  gsl_rng* r = gsl_rng_alloc(gsl_rng_default);
  // Allocate vector to be generated.
  gsl_vector *x = gsl_vector_alloc(DIMENSION);
  // Allocate and initialize central axis of cone.
  gsl_vector *axis = gsl_vector_alloc(DIMENSION);
  gsl_vector_set_all(axis, 1/sqrt(DIMENSION));

  // Generate random vector on spherical cap of cone.
  cone_random_vector(r, axis, THETA_MAX, x);

  // Print out generated vector.
  gsl_vector_fprintf(stdout, x, "%g");

  // Free allocated memory.
  gsl_vector_free(axis);
  gsl_vector_free(x);
  gsl_rng_free(r);
  return 0;
}