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;
22 const T* wX =
nullptr,
34 const T* wX)
override;
44 const T* wX)
override;
53 const GSLVectorType* wX =
nullptr,
65 const GSLVectorType* wX)
override;
75 const GSLVectorType* wX)
override;
84 const GSLVectorType* wX =
nullptr,
96 const GSLVectorType* wX)
override;
106 const GSLVectorType* wX)
override;
115 static void combined_distance_metric(
const gsl_vector* x,
void* params,
118 static inline double calculateP2(
double b,
void* params);
119 static inline double calculateGradP2(
double b,
void* params);
121 static double c_b(
size_t bMax);
122 static inline void calculateD2(
const gsl_vector* x,
126 static inline void calculateD3(
const gsl_vector* x,
133 friend class benchmark_gm_to_dirac_short;
145#include "gm_to_dirac_short.tpp"
149 size_t L,
size_t N,
size_t bMax,
157 size_t N,
size_t bMax,
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, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{}) override
approximate using gsl vectors
bool approximate(const T *covDiag, size_t L, size_t N, size_t bMax, 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(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
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