#ifndef ORACLES_H #define ORACLES_H #include #include double bernoulli_extent_generator (const gsl_rng* r, double p, double r0, double r1); double bernoulli_true_volume (double p, double r0, double r1, unsigned int dimension); double uniform_extent_generator (const gsl_rng* r, double a, double b); double uniform_true_volume (double a, double b, unsigned int dimension); double beta_extent_generator (const gsl_rng* r, double alpha, double beta); double beta_true_volume (double alpha, double beta, unsigned int dimension); double symmetric_spiral_extent_oracle (const gsl_vector* x); double right_triangle_extent_oracle (const gsl_vector* x, double base, double height); double right_triangle_true_volume (double base, double height); double sphere_extent_oracle (const gsl_vector* x, double radius); double sphere_maximum_extent (double radius); double plane_extent_oracle (const gsl_vector* x, double displacement); double cube_extent_oracle (const gsl_vector* x, double edge); double cube_extent_oracle_with_center (const gsl_vector* x, const gsl_vector* center, double edge); double cube_true_volume (double edge, unsigned int dimension); double cube_maximum_extent (double edge, unsigned int dimension); double ellipsoid_extent_oracle (const gsl_vector* x, const gsl_vector* axes); double ellipsoid_true_volume (const gsl_vector* axes); double spheroid_extent_oracle (const gsl_vector* x, double eccentricity); double spheroid_true_volume (double eccentricity, unsigned int dimension); #endif