aboutsummaryrefslogtreecommitdiff
path: root/oracles.h
blob: a661c94ea845a350c9ef0b2de942abf9c3e164e5 (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
31
32
33
34
35
36
37
#ifndef ORACLES_H
#define ORACLES_H

#include <gsl/gsl_blas.h>
#include <gsl/gsl_rng.h>

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