1#ifndef GM_TO_DIRAC_SHORT_H
2#define GM_TO_DIRAC_SHORT_H
4#include <gtest/gtest.h>
6#include "gm_to_dirac_approx_i.h"
7#include "gm_to_dirac_optimization_params.h"
12 using GSLVectorType =
typename gm_to_dirac_approx_i<T>::GSLVectorType;
13 using GSLVectorViewType =
typename gm_to_dirac_approx_i<T>::GSLVectorViewType;
14 using GSLMatrixType =
typename gm_to_dirac_approx_i<T>::GSLMatrixType;
21 const T* wX =
nullptr,
33 const T* wX)
override;
43 const T* wX)
override;
51 const GSLVectorType* wX =
nullptr,
63 const GSLVectorType* wX)
override;
73 const GSLVectorType* wX)
override;
81 const GSLVectorType* wX =
nullptr,
93 const GSLVectorType* wX)
override;
103 const GSLVectorType* wX)
override;
112 static void combined_distance_metric(
const gsl_vector* x,
void* params,
115 static inline double calculateP2(
double b,
void* params);
116 static inline double calculateGradP2(
double b,
void* params);
118 static double c_b(
size_t bMax);
119 static inline void calculateD2(
const gsl_vector* x,
123 static inline void calculateD3(
const gsl_vector* x,
130 friend class benchmark_gm_to_dirac_short;
142#include "gm_to_dirac_short.tpp"
Definition dirac_to_dirac_approx_short.h:9
interface for the gausian mixture to dirac approximation
Definition gm_to_dirac_approx_i.h:20
Definition gm_to_dirac_short.h:10
void modified_van_mises_distance_sq(const GSLVectorType *covDiag, T *distance, size_t L, size_t N, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX) override
calculate modified van mises distance based on standard normal deviation and x
void modified_van_mises_distance_sq_derivative(const T *covDiag, T *gradient, size_t L, size_t N, size_t bMax, T *x, const T *wX) override
calculate modified van mises distance based on standard normal deviation and x
Definition gm_to_dirac_short.cpp:53
bool approximate(const GSLVectorType *covDiag, size_t L, size_t N, GSLMatrixType *x, const GSLVectorType *wX=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{}) override
approximate using gsl vectors
void modified_van_mises_distance_sq(const T *covDiag, T *distance, size_t L, size_t N, size_t bMax, T *x, const T *wX) override
calculate modified van mises distance based on standard normal deviation and x
Definition gm_to_dirac_short.cpp:41
bool approximate(const T *covDiag, size_t L, size_t N, T *x, const T *wX=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{}) override
approximate using raw pointers
Definition gm_to_dirac_short.cpp:26
void modified_van_mises_distance_sq_derivative(const GSLVectorType *covDiag, GSLMatrixType *gradient, size_t L, size_t N, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX) override
calculate modified van mises distance based on standard normal deviation and x
Definition approximate_options.h:6
optimization parameters for the GMToDirac approximation with constant weights
Definition gm_to_dirac_optimization_params.h:163
struct to hold the result of the minimization
Definition gsl_minimizer.h:32