1#ifndef DIRAC_TO_DIRAC_SHORT_H
2#define DIRAC_TO_DIRAC_SHORT_H
4#include <gtest/gtest.h>
6#include "dirac_to_dirac_approx_i.h"
11 using GSLVectorType =
typename dirac_to_dirac_approx_i<T>::GSLVectorType;
12 using GSLVectorViewType =
13 typename dirac_to_dirac_approx_i<T>::GSLVectorViewType;
14 using GSLMatrixType =
typename dirac_to_dirac_approx_i<T>::GSLMatrixType;
15 using GSLMatrixViewType =
16 typename dirac_to_dirac_approx_i<T>::GSLMatrixViewType;
25 const T* wX =
nullptr,
26 const T* wY =
nullptr,
39 const T *wX =
nullptr,
40 const T *wY =
nullptr)
override;
51 const T *wX =
nullptr,
52 const T *wY =
nullptr)
override;
61 const GSLVectorType* wX =
nullptr,
62 const GSLVectorType* wY =
nullptr,
69 const GSLVectorType *y,
74 const GSLVectorType *wX =
nullptr,
75 const GSLVectorType *wY =
nullptr)
override;
80 const GSLVectorType *y,
85 const GSLVectorType *wX =
nullptr,
86 const GSLVectorType *wY =
nullptr)
override;
94 const GSLVectorType* wX =
nullptr,
95 const GSLVectorType* wY =
nullptr,
106 const GSLVectorType *wX =
nullptr,
107 const GSLVectorType *wY =
nullptr)
override;
116 const GSLVectorType *wX =
nullptr,
117 const GSLVectorType *wY =
nullptr)
override;
121 static double c_b(
size_t bMax);
127 static void combined_distance_metric(
const gsl_vector* x,
void* params,
128 double* f, gsl_vector* grad);
130 static inline void correctMean(
const GSLVectorType* meanY, GSLVectorType* x,
131 const GSLVectorType* wX,
size_t L,
size_t N);
134 dirac_to_dirac_approx_short_test_modified_van_mises_distance_sq_derivative,
135 parameterized_test_modified_van_mises_distance_sq_derivative);
137 dirac_to_dirac_approx_short_test_modified_van_mises_distance_sq_derivative,
138 parameterized_test_modified_van_mises_distance_sq_derivative_wrapper_distance);
140 dirac_to_dirac_approx_short_test_modified_van_mises_distance_sq_derivative,
141 parameterized_test_modified_van_mises_distance_sq_derivative_wrapper_gradient);
142 FRIEND_TEST(dirac_to_dirac_approx_short_test_combined,
143 parameterized_test_combined);
144 friend class benchmark_dirac_to_dirac_approx_short;
149 const gsl_vector_float* y,
size_t L,
size_t N,
size_t bMax,
150 gsl_vector_float* x,
const gsl_vector_float* wX,
const gsl_vector_float* wY,
155 const gsl_vector* y,
size_t L,
size_t N,
size_t bMax, gsl_vector* x,
161 float* distance,
const gsl_vector_float* y,
size_t L,
size_t N,
size_t bMax,
162 gsl_vector_float* x,
const gsl_vector_float* wX,
163 const gsl_vector_float* wY);
167 double* distance,
const gsl_vector* y,
size_t L,
size_t N,
size_t bMax,
168 gsl_vector* x,
const gsl_vector* wX,
const gsl_vector* wY);
173 const gsl_vector_float* y,
174 size_t L,
size_t N,
size_t bMax,
176 const gsl_vector_float* wX,
177 const gsl_vector_float* wY);
181 double>::modified_van_mises_distance_sq_derivative(gsl_matrix* gradient,
186 const gsl_vector* wX,
187 const gsl_vector* wY);
interface for the gausian mixture to dirac approximation
Definition dirac_to_dirac_approx_i.h:20
Definition dirac_to_dirac_approx_short.h:9
void modified_van_mises_distance_sq(T *distance, const T *y, size_t M, size_t L, size_t N, size_t bMax, T *x, const T *wX=nullptr, const T *wY=nullptr) override
calculate modified van mises distance based on x and y
Definition dirac_to_dirac_approx_short.cpp:40
void modified_van_mises_distance_sq_derivative(T *gradient, const T *y, size_t M, size_t L, size_t N, size_t bMax, T *x, const T *wX=nullptr, const T *wY=nullptr) override
calculate modified van mises distance based on x and y
Definition dirac_to_dirac_approx_short.cpp:55
bool approximate(const GSLVectorType *y, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX=nullptr, const GSLVectorType *wY=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{}) override
reduce the data points using gsl vectors
bool approximate(const T *y, size_t M, size_t L, size_t N, size_t bMax, T *x, const T *wX=nullptr, const T *wY=nullptr, GslminimizerResult *result=nullptr, const ApproximateOptions &options=ApproximateOptions{}) override
reduce the data points using raw pointers
Definition dirac_to_dirac_approx_short.cpp:24
void modified_van_mises_distance_sq_derivative(GSLMatrixType *gradient, const GSLVectorType *y, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX=nullptr, const GSLVectorType *wY=nullptr) override
calculate modified van mises distance based on x and y
void modified_van_mises_distance_sq(T *distance, const GSLVectorType *y, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX=nullptr, const GSLVectorType *wY=nullptr) override
calculate modified van mises distance based on x and y
Definition approximate_options.h:6
struct to hold the result of the minimization
Definition gsl_minimizer.h:32