1#ifndef GM_TO_DIRAC_EVEN_BINF_H
2#define GM_TO_DIRAC_EVEN_BINF_H
4#include "approximate_options.h"
5#include "gm_to_dirac_even_binf_optimization_params.h"
6#include "gsl_minimizer.h"
7#include "gsl_vector_matrix_types.h"
47 using GSLVectorType =
typename GSLTemplateTypeAlias<T>::VectorType;
48 using GSLMatrixType =
typename GSLTemplateTypeAlias<T>::MatrixType;
69 const T* wX =
nullptr,
88 const T* wX =
nullptr);
117 const T* wX =
nullptr);
133 const GSLVectorType* wX =
nullptr,
150 const GSLVectorType* wX =
nullptr);
168 const GSLVectorType* wX =
nullptr);
184 const GSLVectorType* wX =
nullptr,
201 const GSLVectorType* wX =
nullptr);
219 const GSLVectorType* wX =
nullptr);
235 static void combined_distance_metric(
const gsl_vector*
t,
void* params,
238 static inline void calculateAttraction(
241 static inline void calculateRepulsion(
244 static inline void projectGradient(
250 static inline bool preconditionsHold(
size_t L,
size_t N);
253#include "gm_to_dirac_even_binf.tpp"
Definition dirac_to_dirac_approx_short.h:9
bMax-free Gaussian-to-Dirac approximation for an even-dimensional standard normal target
Definition gm_to_dirac_even_binf.h:45
bool approximate(size_t L, size_t N, T *x, const T *wX=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{})
approximate a standard normal by L Dirac components
Definition gm_to_dirac_even_binf.cpp:86
void modified_van_mises_distance_sq_derivative(T *gradient, size_t L, size_t N, T *x, const T *wX=nullptr)
gradient of the true bMax-free mCvM distance w.r.t. the SAMPLES
Definition gm_to_dirac_even_binf.cpp:110
void modified_van_mises_distance_sq(T *distance, size_t L, size_t N, GSLMatrixType *x, const GSLVectorType *wX=nullptr)
true bMax-free mCvM distance, K_k included
void modified_van_mises_distance_sq_derivative(GSLMatrixType *gradient, size_t L, size_t N, GSLMatrixType *x, const GSLVectorType *wX=nullptr)
gradient of the true bMax-free mCvM distance w.r.t. the SAMPLES
bool approximate(size_t L, size_t N, GSLMatrixType *x, const GSLVectorType *wX=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{})
approximate a standard normal by L Dirac components
void modified_van_mises_distance_sq(T *distance, size_t L, size_t N, T *x, const T *wX=nullptr)
true bMax-free mCvM distance, K_k included
Definition gm_to_dirac_even_binf.cpp:99
Definition approximate_options.h:6
optimization parameters for the bMax-free closed-form even-N Gaussian-to-Dirac approximation
Definition gm_to_dirac_even_binf_optimization_params.h:30
struct to hold the result of the minimization
Definition gsl_minimizer.h:32