1#ifndef DIRAC_TO_DIRAC_SHORT_THREAD_H
2#define DIRAC_TO_DIRAC_SHORT_THREAD_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 =
typename dirac_to_dirac_approx_i<T>::GSLMatrixViewType;
24 const T* wX =
nullptr,
25 const T* wY =
nullptr,
38 const T *wX =
nullptr,
39 const T *wY =
nullptr)
override;
50 const T *wX =
nullptr,
51 const T *wY =
nullptr)
override;
60 const GSLVectorType* wX =
nullptr,
61 const GSLVectorType* wY =
nullptr,
68 const GSLVectorType *y,
73 const GSLVectorType *wX =
nullptr,
74 const GSLVectorType *wY =
nullptr)
override;
79 const GSLVectorType *y,
84 const GSLVectorType *wX =
nullptr,
85 const GSLVectorType *wY =
nullptr)
override;
93 const GSLVectorType* wX =
nullptr,
94 const GSLVectorType* wY =
nullptr,
105 const GSLVectorType *wX =
nullptr,
106 const GSLVectorType *wY =
nullptr)
override;
115 const GSLVectorType *wX =
nullptr,
116 const GSLVectorType *wY =
nullptr)
override;
120 static double c_b(
size_t bMax);
126 static void combined_distance_metric(
const gsl_vector* x,
void* params,
127 double* f, gsl_vector* grad);
129 static inline void correctMean(
const gsl_vector* meanY, gsl_vector* x,
130 const gsl_vector* wX,
size_t L,
size_t N);
133 dirac_to_dirac_approx_short_test_modified_van_mises_distance_sq_derivative,
134 parameterized_test_modified_van_mises_distance_sq_derivative);
135 FRIEND_TEST(dirac_to_dirac_approx_short_test_combined,
136 parameterized_test_combined);
137 friend class testero;
138 friend class benchmark_dirac_to_dirac_approx_short_thread;
143 const gsl_vector_float* y,
size_t L,
size_t N,
size_t bMax,
144 gsl_vector_float* x,
const GSLVectorType* wX,
const GSLVectorType* wY,
149 const gsl_vector* y,
size_t L,
size_t N,
size_t bMax, gsl_vector* x,
150 const GSLVectorType* wX,
const GSLVectorType* wY,
155 float* distance,
const gsl_vector_float* y,
size_t L,
size_t N,
size_t bMax,
156 gsl_vector_float* x,
const gsl_vector_float* wX,
157 const gsl_vector_float* wY);
161 double* distance,
const gsl_vector* y,
size_t L,
size_t N,
size_t bMax,
162 gsl_vector* x,
const gsl_vector* wX,
const gsl_vector* wY);
167 const gsl_vector_float* y,
168 size_t L,
size_t N,
size_t bMax,
170 const gsl_vector_float* wX,
171 const gsl_vector_float* wY);
175 double>::modified_van_mises_distance_sq_derivative(gsl_matrix* gradient,
180 const gsl_vector* wX,
181 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_thread.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_thread.cpp:41
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_thread.cpp:57
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_thread.cpp:25
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