Deterministic Gaussian Sampling
Loading...
Searching...
No Matches
gm_to_dirac_short_c.h
1#ifndef GM_TO_DIRAC_SHORT_C_H
2#define GM_TO_DIRAC_SHORT_C_H
3
4#include "gm_to_dirac_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_gm_to_dirac_short_double() {
15 return new gm_to_dirac_short<double>();
16}
17
18DLL_EXPORT void delete_gm_to_dirac_short_double(void* instance) {
19 delete static_cast<gm_to_dirac_short<double>*>(instance);
20}
21
22DLL_EXPORT bool gm_to_dirac_short_double_approximate(
23 void* instance, const double* covDiag, size_t L, size_t N, size_t bMax,
24 double* x, const double* wX, GslminimizerResult* result,
26 auto* obj = static_cast<gm_to_dirac_short<double>*>(instance);
27 return obj->approximate(covDiag, L, N, bMax, x, wX, result,
29}
30
31DLL_EXPORT void gm_to_dirac_short_double_modified_van_mises_distance_sq(
32 void* instance, const double* covDiag, double* distance, size_t L, size_t N,
33 size_t bMax, double* x, const double* wX) {
34 auto* obj = static_cast<gm_to_dirac_short<double>*>(instance);
35 obj->modified_van_mises_distance_sq(covDiag, distance, L, N, bMax, x, wX);
36}
37
38DLL_EXPORT void
39gm_to_dirac_short_double_modified_van_mises_distance_sq_derivative(
40 void* instance, const double* covDiag, double* gradient, size_t L, size_t N,
41 size_t bMax, double* x, const double* wX) {
42 auto* obj = static_cast<gm_to_dirac_short<double>*>(instance);
44 x, wX);
45}
46
47DLL_EXPORT void* create_gm_to_dirac_short_float() {
48 return new gm_to_dirac_short<float>();
49}
50
51DLL_EXPORT void delete_gm_to_dirac_short_float(void* instance) {
52 delete static_cast<gm_to_dirac_short<float>*>(instance);
53}
54
55DLL_EXPORT bool gm_to_dirac_short_float_approximate(
56 void* instance, const float* covDiag, size_t L, size_t N, size_t bMax,
57 float* x, const float* wX, GslminimizerResult* result,
59 auto* obj = static_cast<gm_to_dirac_short<float>*>(instance);
60 return obj->approximate(covDiag, L, N, bMax, x, wX, result,
62}
63
64DLL_EXPORT void gm_to_dirac_short_float_modified_van_mises_distance_sq(
65 void* instance, const float* covDiag, float* distance, size_t L, size_t N,
66 size_t bMax, float* x, const float* wX) {
67 auto* obj = static_cast<gm_to_dirac_short<float>*>(instance);
68 obj->modified_van_mises_distance_sq(covDiag, distance, L, N, bMax, x, wX);
69}
70
71DLL_EXPORT void
72gm_to_dirac_short_float_modified_van_mises_distance_sq_derivative(
73 void* instance, const float* covDiag, float* gradient, size_t L, size_t N,
74 size_t bMax, float* x, const float* wX) {
75 auto* obj = static_cast<gm_to_dirac_short<float>*>(instance);
77 x, wX);
78}
79
80} // extern "C"
81
82#endif // GM_TO_DIRAC_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: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 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
Definition approximate_options.h:6
struct to hold the result of the minimization
Definition gsl_minimizer.h:32