1#ifndef DIRAC_TO_DIRAC_APPROX_I_H
2#define DIRAC_TO_DIRAC_APPROX_I_H
4#include <gsl/gsl_matrix.h>
5#include <gsl/gsl_matrix_float.h>
6#include <gsl/gsl_matrix_long_double.h>
10#include "approximate_options.h"
11#include "gsl_minimizer.h"
12#include "gsl_vector_matrix_types.h"
22 using GSLVectorType =
typename GSLTemplateTypeAlias<T>::VectorType;
23 using GSLVectorViewType =
typename GSLTemplateTypeAlias<T>::VectorViewType;
24 using GSLMatrixType =
typename GSLTemplateTypeAlias<T>::MatrixType;
25 using GSLMatrixViewType =
typename GSLTemplateTypeAlias<T>::MatrixViewType;
44 virtual bool approximate(
const T* y,
size_t M,
size_t L,
size_t N,
45 size_t bMax, T* x,
const T* wX,
const T* wY,
64 size_t L,
size_t N,
size_t bMax,
83 T* gradient,
const T* y,
size_t M,
size_t L,
size_t N,
size_t bMax, T* x,
84 const T* wX,
const T* wY) = 0;
100 virtual bool approximate(
const GSLVectorType* y,
size_t L,
size_t N,
101 size_t bMax, GSLVectorType* x,
102 const GSLVectorType* wX,
const GSLVectorType* wY,
120 T* distance,
const GSLVectorType* y,
size_t L,
size_t N,
size_t bMax,
121 GSLVectorType* x,
const GSLVectorType* wX,
const GSLVectorType* wY) = 0;
137 GSLMatrixType* gradient,
const GSLVectorType* y,
size_t L,
size_t N,
138 size_t bMax, GSLVectorType* x,
const GSLVectorType* wX,
139 const GSLVectorType* wY) = 0;
155 GSLMatrixType* x,
const GSLVectorType* wX,
172 size_t L,
size_t bMax,
174 const GSLVectorType* wX,
175 const GSLVectorType* wY) = 0;
190 GSLMatrixType* gradient, GSLMatrixType* y,
size_t L,
size_t bMax,
191 GSLMatrixType* x,
const GSLVectorType* wX,
const GSLVectorType* wY) = 0;
interface for the gausian mixture to dirac approximation
Definition dirac_to_dirac_approx_i.h:20
virtual 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, const T *wY)=0
calculate modified van mises distance based on x and y
virtual void modified_van_mises_distance_sq(T *distance, GSLMatrixType *y, size_t L, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX, const GSLVectorType *wY)=0
calculate modified van mises distance based on x and y
virtual 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, const GSLVectorType *wY)=0
calculate modified van mises distance based on x and y
virtual 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, const GSLVectorType *wY)=0
calculate modified van mises distance based on x and y
virtual bool approximate(const T *y, size_t M, size_t L, size_t N, size_t bMax, T *x, const T *wX, const T *wY, GslminimizerResult *result, const ApproximateOptions &options)=0
reduce the data points using raw pointers
virtual void modified_van_mises_distance_sq_derivative(GSLMatrixType *gradient, GSLMatrixType *y, size_t L, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX, const GSLVectorType *wY)=0
calculate modified van mises distance based on x and y
virtual 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, const T *wY)=0
calculate modified van mises distance based on x and y
virtual bool approximate(const GSLVectorType *y, size_t L, size_t N, size_t bMax, GSLVectorType *x, const GSLVectorType *wX, const GSLVectorType *wY, GslminimizerResult *result, const ApproximateOptions &options)=0
reduce the data points using gsl vectors
virtual bool approximate(GSLMatrixType *y, size_t L, size_t bMax, GSLMatrixType *x, const GSLVectorType *wX, const GSLVectorType *wY, GslminimizerResult *result, const ApproximateOptions &options)=0
reduce the data points using gsl matricies where possible
Definition approximate_options.h:6
struct to hold the result of the minimization
Definition gsl_minimizer.h:32