# NAME

get_gaussian_process_posterior_distribution - Gets the mean and covariance for the posterior of a Gaussian process
# SYNOPSIS

#include "gp/gp_gaussian_processes.h"
Example compile flags (system dependent):
-DLINUX_X86_64 -DLINUX_X86_64_OPTERON -DGNU_COMPILER
-I/home/kobus/include
-L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
-lKJB -lfftw3 -lgsl -lgslcblas -ljpeg -lSVM -lstdc++ -lpthread -lSLATEC -lg2c -lacml -lacml_mv -lblas -lg2c -lncursesw
int get_gaussian_process_posterior_distribution
(
Vector **mu,
Matrix **sigma,
const Vector_vector *train_indices,
const Vector_vector *train_data,
double noise_sigma,
int (*cov_func)(Matrix **,const Vector *,const Vector *,const void *,int),
const void *hyper_params
);

# DESCRIPTION

This routine gives the mean vector (in mu) and covariance matrix (in sigma) of
the posterior distribution of a Gaussian process with covariance function
cov_func, and whose training data train_data exists at indices train_indices.
Finally, the (Gaussian) noise has variance noise_sigma. mu will have dimension
given by
train_indices->length * train_data->elements[0]->length,
and sigma will be a square matrix of the same dimension.
Naturally, the vectors of train_indices must all be of equal length, as must
the vectors of train_data, and cov_func must return square matrix of dimension d.
It's worth noting that the mean of the posterior is the MAP estimate of the GP.
If the vector pointed to by mu is NULL, then a vector of the appropriate size
is created. If it exists, but is the wrong size, then it is recreated. Otherwise,
the storage is recycled. The same goes for the matrix pointed to by sigma.
# RETURNS

If the routine fails (due to storage allocation, an error in the
covariance function, or a mismatch in the sizes of the indices), then ERROR
is returned with and error message being set. Otherwise NO_ERROR is returned.
# DISCLAIMER

This software is not adequatedly tested. It is recomended that
results are checked independantly where appropriate.
# AUTHOR

Ernesto Brau
# DOCUMENTER

Ernesto Brau
# SEE ALSO

fill_covariance_matrix
,
fill_mean_vector
,
sample_from_gaussian_process_prior
,
sample_from_gaussian_process_prior_i
,
sample_from_gaussian_process_predictive
,
sample_from_gaussian_process_predictive_i
,
get_gaussian_process_predictive_distribution
,
get_gaussian_process_predictive_distribution_i
,
get_gaussian_process_posterior_distribution_i
,
compute_gaussian_process_likelihood
,
compute_gaussian_process_likelihood_i
,
compute_gaussian_process_marginal_likelihood
,
compute_gaussian_process_marginal_likelihood_i
,
compute_gaussian_process_marginal_log_likelihood
,
compute_gaussian_process_marginal_log_likelihood_i