C Configuration Space and Tuning Library (CCS)
Loading...
Searching...
No Matches
distribution.h
Go to the documentation of this file.
1#ifndef _CCS_DISTRIBUTION_H
2#define _CCS_DISTRIBUTION_H
3
13#ifdef __cplusplus
14extern "C" {
15#endif
16
36
41
55
60
88extern ccs_result_t
90 ccs_numeric_type_t data_type,
91 ccs_float_t mu,
92 ccs_float_t sigma,
93 ccs_scale_type_t scale,
94 ccs_numeric_t quantization,
95 ccs_distribution_t *distribution_ret);
96
117extern ccs_result_t
119 ccs_float_t mu,
120 ccs_float_t sigma,
121 ccs_scale_type_t scale,
122 ccs_int_t quantization,
123 ccs_distribution_t *distribution_ret);
124
145extern ccs_result_t
147 ccs_float_t mu,
148 ccs_float_t sigma,
149 ccs_scale_type_t scale,
150 ccs_float_t quantization,
151 ccs_distribution_t *distribution_ret);
152
186extern ccs_result_t
188 ccs_numeric_type_t data_type,
189 ccs_numeric_t lower,
190 ccs_numeric_t upper,
191 ccs_scale_type_t scale,
192 ccs_numeric_t quantization,
193 ccs_distribution_t *distribution_ret);
194
217extern ccs_result_t
219 ccs_int_t lower,
220 ccs_int_t upper,
221 ccs_scale_type_t scale,
222 ccs_int_t quantization,
223 ccs_distribution_t *distribution_ret);
224
247extern ccs_result_t
249 ccs_float_t lower,
250 ccs_float_t upper,
251 ccs_scale_type_t scale,
252 ccs_float_t quantization,
253 ccs_distribution_t *distribution_ret);
254
272extern ccs_result_t
274 size_t num_areas,
275 ccs_float_t *areas,
276 ccs_distribution_t *distribution_ret);
277
303extern ccs_result_t
305 size_t num_distributions,
306 ccs_distribution_t *distributions,
307 ccs_float_t *weights,
308 ccs_distribution_t *distribution_ret);
309
329extern ccs_result_t
331 size_t num_distributions,
332 ccs_distribution_t *distributions,
333 ccs_distribution_t *distribution_ret);
334
347extern ccs_result_t
349 ccs_distribution_t distribution,
350 ccs_distribution_type_t *type_ret);
351
364extern ccs_result_t
366 ccs_distribution_t distribution,
367 size_t *dimension_ret);
368
382extern ccs_result_t
384 ccs_distribution_t distribution,
385 ccs_numeric_type_t *data_types_ret);
386
401extern ccs_result_t
403 ccs_distribution_t distribution,
404 ccs_interval_t *interval_ret);
405
423extern ccs_result_t
425 ccs_distribution_t distribution,
426 ccs_interval_t *intervals,
427 ccs_bool_t *oversamplings_ret);
428
451extern ccs_result_t
453 ccs_distribution_t distribution,
454 ccs_float_t *mu_ret,
455 ccs_float_t *sigma_ret,
456 ccs_scale_type_t *scale_ret,
457 ccs_numeric_t *quantization_ret);
458
481extern ccs_result_t
483 ccs_distribution_t distribution,
484 ccs_numeric_t *lower_ret,
485 ccs_numeric_t *upper_ret,
486 ccs_scale_type_t *scale_ret,
487 ccs_numeric_t *quantization_ret);
488
511extern ccs_result_t
513 ccs_distribution_t distribution,
514 size_t num_areas,
515 ccs_float_t *areas,
516 size_t *num_areas_ret);
517
542extern ccs_result_t
544 ccs_distribution_t distribution,
545 size_t num_distributions,
546 ccs_distribution_t *distributions,
547 size_t *num_distributions_ret);
548
571extern ccs_result_t
573 ccs_distribution_t distribution,
574 size_t num_weights,
575 ccs_float_t *weights,
576 size_t *num_weights_ret);
577
602extern ccs_result_t
604 ccs_distribution_t distribution,
605 size_t num_distributions,
606 ccs_distribution_t *distributions,
607 size_t *num_distributions_ret);
608
624extern ccs_result_t
626 ccs_distribution_t distribution,
627 ccs_rng_t rng,
628 ccs_numeric_t *values);
629
648extern ccs_result_t
650 ccs_distribution_t distribution,
651 ccs_rng_t rng,
652 size_t num_samples,
653 ccs_numeric_t *values);
654
679extern ccs_result_t
681 ccs_distribution_t distribution,
682 ccs_rng_t rng,
683 size_t num_samples,
684 size_t stride,
685 ccs_numeric_t *values);
686
704extern ccs_result_t
706 ccs_distribution_t distribution,
707 ccs_rng_t rng,
708 size_t num_samples,
709 ccs_numeric_t **values);
733extern ccs_result_t
735 ccs_distribution_t distribution,
736 ccs_rng_t rng,
737 ccs_parameter_t *parameters,
738 size_t num_samples,
739 ccs_datum_t *values);
740
758extern ccs_result_t
760 ccs_distribution_t distribution,
761 ccs_rng_t rng,
762 ccs_parameter_t *parameters,
763 ccs_datum_t *values);
764
765#ifdef __cplusplus
766}
767#endif
768
769#endif //_CCS_DISTRIBUTION_H
int64_t ccs_int_t
A CCS integer type.
Definition base.h:33
int32_t ccs_bool_t
A CCS boolean type.
Definition base.h:37
struct _ccs_parameter_s * ccs_parameter_t
An opaque type defining a CCS parameter.
Definition base.h:95
double ccs_float_t
A CCS floating point type.
Definition base.h:29
enum ccs_numeric_type_e ccs_numeric_type_t
A commodity type to represent CCS numeric types.
Definition base.h:384
enum ccs_result_e ccs_result_t
A commodity type to represent CCS errors and returned by most functions.
Definition base.h:247
struct _ccs_rng_s * ccs_rng_t
An opaque type defining a CCS random generator.
Definition base.h:87
struct _ccs_distribution_s * ccs_distribution_t
An opaque type defining a CCS distribution.
Definition base.h:91
ccs_result_t ccs_distribution_sample(ccs_distribution_t distribution, ccs_rng_t rng, ccs_numeric_t *values)
Get a random sample from a distribution.
ccs_result_t ccs_multivariate_distribution_get_distributions(ccs_distribution_t distribution, size_t num_distributions, ccs_distribution_t *distributions, size_t *num_distributions_ret)
Get the distributions contained in a multivariate distribution.
ccs_result_t ccs_distribution_get_type(ccs_distribution_t distribution, ccs_distribution_type_t *type_ret)
Get the type of a distribution.
ccs_result_t ccs_distribution_get_data_types(ccs_distribution_t distribution, ccs_numeric_type_t *data_types_ret)
Get the data types of a distribution.
ccs_scale_type_e
CCS scale types.
Definition distribution.h:45
@ CCS_SCALE_TYPE_LOGARITHMIC
A logarithmic scale.
Definition distribution.h:49
@ CCS_SCALE_TYPE_MAX
Guard.
Definition distribution.h:51
@ CCS_SCALE_TYPE_LINEAR
A linear scale.
Definition distribution.h:47
@ CCS_SCALE_TYPE_FORCE_32BIT
Try forcing 32 bits value for bindings.
Definition distribution.h:53
ccs_result_t ccs_create_normal_float_distribution(ccs_float_t mu, ccs_float_t sigma, ccs_scale_type_t scale, ccs_float_t quantization, ccs_distribution_t *distribution_ret)
Create a new normal distribution of floating point values.
ccs_result_t ccs_create_multivariate_distribution(size_t num_distributions, ccs_distribution_t *distributions, ccs_distribution_t *distribution_ret)
Create a new multivariate distribution.
ccs_result_t ccs_create_mixture_distribution(size_t num_distributions, ccs_distribution_t *distributions, ccs_float_t *weights, ccs_distribution_t *distribution_ret)
Create a new mixture distribution.
ccs_result_t ccs_uniform_distribution_get_properties(ccs_distribution_t distribution, ccs_numeric_t *lower_ret, ccs_numeric_t *upper_ret, ccs_scale_type_t *scale_ret, ccs_numeric_t *quantization_ret)
Get the properties of a uniform distribution.
ccs_result_t ccs_normal_distribution_get_properties(ccs_distribution_t distribution, ccs_float_t *mu_ret, ccs_float_t *sigma_ret, ccs_scale_type_t *scale_ret, ccs_numeric_t *quantization_ret)
Get the properties of a normal distribution.
ccs_result_t ccs_mixture_distribution_get_weights(ccs_distribution_t distribution, size_t num_weights, ccs_float_t *weights, size_t *num_weights_ret)
Get the normalized weights of a mixture distribution.
ccs_result_t ccs_distribution_parameters_sample(ccs_distribution_t distribution, ccs_rng_t rng, ccs_parameter_t *parameters, ccs_datum_t *values)
Get a random parameters' sample by sampling a distribution.
ccs_result_t ccs_create_uniform_int_distribution(ccs_int_t lower, ccs_int_t upper, ccs_scale_type_t scale, ccs_int_t quantization, ccs_distribution_t *distribution_ret)
Create a new uniform distribution of integer values.
ccs_result_t ccs_roulette_distribution_get_areas(ccs_distribution_t distribution, size_t num_areas, ccs_float_t *areas, size_t *num_areas_ret)
Get the normalized areas of a roulette distribution.
ccs_result_t ccs_create_uniform_distribution(ccs_numeric_type_t data_type, ccs_numeric_t lower, ccs_numeric_t upper, ccs_scale_type_t scale, ccs_numeric_t quantization, ccs_distribution_t *distribution_ret)
Create a new uniform distribution of the specified data type.
ccs_result_t ccs_create_normal_int_distribution(ccs_float_t mu, ccs_float_t sigma, ccs_scale_type_t scale, ccs_int_t quantization, ccs_distribution_t *distribution_ret)
Create a new normal distribution of integer values.
ccs_result_t ccs_distribution_parameters_samples(ccs_distribution_t distribution, ccs_rng_t rng, ccs_parameter_t *parameters, size_t num_samples, ccs_datum_t *values)
Get a collection of random parameters' samples by sampling a distribution.
ccs_result_t ccs_distribution_samples(ccs_distribution_t distribution, ccs_rng_t rng, size_t num_samples, ccs_numeric_t *values)
Get a collection of random samples from a distribution.
enum ccs_distribution_type_e ccs_distribution_type_t
A commodity type to represent CCS distribution type.
Definition distribution.h:40
enum ccs_scale_type_e ccs_scale_type_t
A commodity type to represent CCS scale type.
Definition distribution.h:59
ccs_result_t ccs_create_roulette_distribution(size_t num_areas, ccs_float_t *areas, ccs_distribution_t *distribution_ret)
Create a new area proportional distribution of integer values.
ccs_result_t ccs_distribution_get_bounds(ccs_distribution_t distribution, ccs_interval_t *interval_ret)
Get the bounds of a distribution.
ccs_result_t ccs_distribution_get_dimension(ccs_distribution_t distribution, size_t *dimension_ret)
Get the dimensionality of a distribution.
ccs_result_t ccs_create_uniform_float_distribution(ccs_float_t lower, ccs_float_t upper, ccs_scale_type_t scale, ccs_float_t quantization, ccs_distribution_t *distribution_ret)
Create a new uniform distribution of floating point values.
ccs_result_t ccs_distribution_soa_samples(ccs_distribution_t distribution, ccs_rng_t rng, size_t num_samples, ccs_numeric_t **values)
Get a collection of random samples from a distribution.
ccs_result_t ccs_distribution_strided_samples(ccs_distribution_t distribution, ccs_rng_t rng, size_t num_samples, size_t stride, ccs_numeric_t *values)
Get a collection of random samples from a distribution.
ccs_distribution_type_e
CCS distribution types.
Definition distribution.h:20
@ CCS_DISTRIBUTION_TYPE_MULTIVARIATE
A multivariate distribution.
Definition distribution.h:30
@ CCS_DISTRIBUTION_TYPE_MAX
Guard.
Definition distribution.h:32
@ CCS_DISTRIBUTION_TYPE_ROULETTE
A roulette wheel selection distribution.
Definition distribution.h:26
@ CCS_DISTRIBUTION_TYPE_NORMAL
A normal distribution over floating point or integer values.
Definition distribution.h:24
@ CCS_DISTRIBUTION_TYPE_MIXTURE
A mixture distribution.
Definition distribution.h:28
@ CCS_DISTRIBUTION_TYPE_FORCE_32BIT
Try forcing 32 bits value for bindings.
Definition distribution.h:34
@ CCS_DISTRIBUTION_TYPE_UNIFORM
A uniform distribution over floating point or integer values.
Definition distribution.h:22
ccs_result_t ccs_mixture_distribution_get_distributions(ccs_distribution_t distribution, size_t num_distributions, ccs_distribution_t *distributions, size_t *num_distributions_ret)
Get the distributions contained in a mixture distribution.
ccs_result_t ccs_distribution_check_oversampling(ccs_distribution_t distribution, ccs_interval_t *intervals, ccs_bool_t *oversamplings_ret)
Check if a distribution could return values outside of the given intervals.
ccs_result_t ccs_create_normal_distribution(ccs_numeric_type_t data_type, ccs_float_t mu, ccs_float_t sigma, ccs_scale_type_t scale, ccs_numeric_t quantization, ccs_distribution_t *distribution_ret)
Create a new normal distribution of the specified data type.
A Structure containing a CCS datum.
Definition base.h:494
A structure defining an interval over numeric values.
Definition interval.h:16
A union that can contain either a ccs_int_t or a ccs_float_t.
Definition base.h:394