Deterministic Gaussian Sampling
Loading...
Searching...
No Matches
gm_to_dirac_approx_i.h
1#ifndef GM_TO_DIRAC_I_H
2#define GM_TO_DIRAC_I_H
3
4#include <gsl/gsl_matrix.h>
5#include <gsl/gsl_matrix_float.h>
6#include <gsl/gsl_matrix_long_double.h>
7
8#include <type_traits>
9
10#include "approximate_options.h"
11#include "gsl_minimizer.h"
12#include "gsl_vector_matrix_types.h"
13
19template <typename T>
21 public:
22 using GSLVectorType = typename GSLTemplateTypeAlias<T>::VectorType;
23 using GSLVectorViewType = typename GSLTemplateTypeAlias<T>::VectorViewType;
24 using GSLMatrixType = typename GSLTemplateTypeAlias<T>::MatrixType;
25
26 virtual ~gm_to_dirac_approx_i() = default;
27
40 virtual bool approximate(const T* covDiag, size_t L, size_t N, size_t bMax,
41 T* x, const T* wX, GslminimizerResult* result,
42 const ApproximateOptions& options) = 0;
43
57 virtual void modified_van_mises_distance_sq(const T* covDiag, T* distance,
58 size_t L, size_t N, size_t bMax,
59 T* x, const T* wX) = 0;
60
74 virtual void modified_van_mises_distance_sq_derivative(const T* covDiag,
75 T* gradient, size_t L,
76 size_t N, size_t bMax,
77 T* x, const T* wX) = 0;
78
92 virtual bool approximate(const GSLVectorType* covDiag, size_t L, size_t N,
93 size_t bMax, GSLVectorType* x,
94 const GSLVectorType* wX, GslminimizerResult* result,
95 const ApproximateOptions& options) = 0;
96
110 virtual void modified_van_mises_distance_sq(const GSLVectorType* covDiag,
111 T* distance, size_t L, size_t N,
112 size_t bMax, GSLVectorType* x,
113 const GSLVectorType* wX) = 0;
114
129 const GSLVectorType* covDiag, GSLVectorType* gradient, size_t L, size_t N,
130 size_t bMax, GSLVectorType* x, const GSLVectorType* wX) = 0;
131
145 virtual bool approximate(const GSLVectorType* covDiag, size_t L, size_t N,
146 size_t bMax, GSLMatrixType* x,
147 const GSLVectorType* wX, GslminimizerResult* result,
148 const ApproximateOptions& options) = 0;
149
163 virtual void modified_van_mises_distance_sq(const GSLVectorType* covDiag,
164 T* distance, size_t L, size_t N,
165 size_t bMax, GSLMatrixType* x,
166 const GSLVectorType* wX) = 0;
167
182 const GSLVectorType* covDiag, GSLMatrixType* gradient, size_t L, size_t N,
183 size_t bMax, GSLMatrixType* x, const GSLVectorType* wX) = 0;
184};
185
186#endif // GM_TO_DIRAC_I_H
Definition dirac_to_dirac_approx_short.h:9
interface for the gausian mixture to dirac approximation
Definition gm_to_dirac_approx_i.h:20
virtual void modified_van_mises_distance_sq_derivative(const GSLVectorType *covDiag, GSLVectorType *gradient, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX)=0
calculate modified van mises distance based on standard normal deviation and x
virtual 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)=0
calculate modified van mises distance based on standard normal deviation and x
virtual 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)=0
calculate modified van mises distance based on standard normal deviation and x
virtual bool approximate(const T *covDiag, size_t L, size_t N, size_t bMax, T *x, const T *wX, GslminimizerResult *result, const ApproximateOptions &options)=0
approximate using raw pointers
virtual bool approximate(const GSLVectorType *covDiag, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX, GslminimizerResult *result, const ApproximateOptions &options)=0
approximate using gsl vectors
virtual void modified_van_mises_distance_sq(const GSLVectorType *covDiag, T *distance, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX)=0
calculate modified van mises distance based on standard normal deviation and x
virtual 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)=0
calculate modified van mises distance based on standard normal deviation and x
virtual bool approximate(const GSLVectorType *covDiag, size_t L, size_t N, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX, GslminimizerResult *result, const ApproximateOptions &options)=0
approximate using gsl matricies where possible
virtual 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)=0
calculate modified van mises distance based on standard normal deviation and x
Definition approximate_options.h:6
struct to hold the result of the minimization
Definition gsl_minimizer.h:32