analistica/ex-7/common.h

41 lines
828 B
C
Raw Normal View History

2020-03-06 11:54:28 +01:00
#pragma once
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_rng.h>
/* Parameters for bivariate
* gaussian PDF
*/
struct par {
double x0; // x mean
double y0; // y mean
double sigma_x; // x standard dev
double sigma_y; // y standard dev
double rho; // correlation: cov(x,y)/σx⋅σy
};
/* A sample of N 2D points is an
* N×2 matrix, with vectors as rows.
*/
typedef struct {
struct par p;
gsl_matrix *data;
} sample_t;
/* Create a sample of `n` points */
sample_t* sample_t_alloc(size_t n, struct par p);
/* Delete a sample */
void sample_t_free(sample_t *x);
/* `generate_normal(r, n, p)` will create
* a sample of `n` points, distributed
* according to a bivariate gaussian distribution
* of parameters `p`.
*/
sample_t* generate_normal(gsl_rng *r, size_t n, struct par *p);