Deterministic Gaussian Sampling
Loading...
Searching...
No Matches
dirac_to_dirac_approx_short_c.h
1#ifndef DIRAC_TO_DIRAC_APPROX_SHORT_C_H
2#define DIRAC_TO_DIRAC_APPROX_SHORT_C_H
3
4#include "dirac_to_dirac_approx_short.h"
5
6#ifdef _WIN32
7#define DLL_EXPORT __declspec(dllexport)
8#else
9#define DLL_EXPORT
10#endif
11
12extern "C" {
13
14DLL_EXPORT void* create_dirac_to_dirac_approx_short_double() {
16}
17
18DLL_EXPORT void delete_dirac_to_dirac_approx_short_double(void* instance) {
20}
21
22DLL_EXPORT bool dirac_to_dirac_approx_short_double_approximate(
23 void* instance, const double* y, size_t M, size_t L, size_t N, double* x,
24 const double* wX, const double* wY, GslminimizerResult* result,
27 return obj->approximate(y, M, L, N, x, wX, wY, result,
29}
30
31DLL_EXPORT void
32dirac_to_dirac_approx_short_double_modified_van_mises_distance_sq(
33 void* instance, double* distance, const double* y, size_t M, size_t L,
34 size_t N, size_t bMax, double* x, const double* wX, const double* wY) {
36 obj->modified_van_mises_distance_sq(distance, y, M, L, N, bMax, x, wX, wY);
37}
38
39DLL_EXPORT void
40dirac_to_dirac_approx_short_double_modified_van_mises_distance_sq_derivative(
41 void* instance, double* gradient, const double* y, size_t M, size_t L,
42 size_t N, size_t bMax, double* x, const double* wX, const double* wY) {
45 wX, wY);
46}
47
48DLL_EXPORT void* create_dirac_to_dirac_approx_short_float() {
50}
51
52DLL_EXPORT void delete_dirac_to_dirac_approx_short_float(void* instance) {
53 delete static_cast<dirac_to_dirac_approx_short<float>*>(instance);
54}
55
56DLL_EXPORT bool dirac_to_dirac_approx_short_float_approximate(
57 void* instance, const float* y, size_t M, size_t L, size_t N, float* x,
58 const float* wX, const float* wY, GslminimizerResult* result,
60 auto* obj = static_cast<dirac_to_dirac_approx_short<float>*>(instance);
61 return obj->approximate(y, M, L, N, x, wX, wY, result,
63}
64
65DLL_EXPORT void
66dirac_to_dirac_approx_short_float_modified_van_mises_distance_sq(
67 void* instance, float* distance, const float* y, size_t M, size_t L,
68 size_t N, size_t bMax, float* x, const float* wX, const float* wY) {
69 auto* obj = static_cast<dirac_to_dirac_approx_short<float>*>(instance);
70 obj->modified_van_mises_distance_sq(distance, y, M, L, N, bMax, x, wX, wY);
71}
72
73DLL_EXPORT void
74dirac_to_dirac_approx_short_float_modified_van_mises_distance_sq_derivative(
75 void* instance, float* gradient, const float* y, size_t M, size_t L,
76 size_t N, size_t bMax, float* x, const float* wX, const float* wY) {
77 auto* obj = static_cast<dirac_to_dirac_approx_short<float>*>(instance);
79 wX, wY);
80}
81
82} // extern "C"
83
84#endif // DIRAC_TO_DIRAC_APPROX_SHORT_C_H
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:39
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:54
bool approximate(const T *y, size_t M, size_t L, size_t N, 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
Definition approximate_options.h:6
struct to hold the result of the minimization
Definition gsl_minimizer.h:32