Deterministic Gaussian Sampling
Loading...
Searching...
No Matches
gradient_van_mises_distance_sq_dynamic_weight.h
1
#ifndef GRADIENT_VAN_MISES_DISTANCE_SQ_DYNAMIC_WEIGHT_H
2
#define GRADIENT_VAN_MISES_DISTANCE_SQ_DYNAMIC_WEIGHT_H
3
4
#include "dirac_to_dirac_optimization_params.h"
5
#include "gsl_minimizer.h"
6
#include "gsl_multivariative_gradient_template.h"
7
8
class
gradient_van_mises_distance_sq_dynamic_weight
9
:
public
gsl_multivariative_gradient_template
<
10
DiracToDiracVariableWeightOptimizationParams> {
11
public
:
12
static
double
scalarFunctionWrapper(
double
xI
,
void
* params) {
13
GradientParams*
gradientParams
= (GradientParams*)params;
14
gsl_vector
*
xCopy
=
gsl_vector_alloc
(
gradientParams
->xOriginal->size);
15
gsl_vector_memcpy
(
xCopy
,
gradientParams
->xOriginal);
16
gsl_vector_set
(
xCopy
,
gradientParams
->index,
xI
);
17
double
fValue
=
gradientParams
->f(
xCopy
,
gradientParams
->params);
18
gsl_vector_free
(
xCopy
);
19
return
fValue
;
20
}
21
22
void
multivariativeGradient(
23
const
gsl_vector
* x,
gsl_vector
*
grad
, VectorFunc f,
24
DiracToDiracVariableWeightOptimizationParams
* params,
25
double
h
= 1
e
-6)
override
{
26
GradientParams
gp
;
27
gp
.xOriginal = (
gsl_vector
*)x;
// Non-const because we make a copy inside
28
gp
.params = params;
29
gp
.f = f;
30
gsl_function
F
;
31
F
.function =
32
gradient_van_mises_distance_sq_dynamic_weight::scalarFunctionWrapper;
33
F
.params = &
gp
;
34
35
for
(
size_t
i
= 0;
i
< x->size; ++
i
) {
36
gp
.index =
i
;
37
38
double
result
,
error
;
39
gsl_deriv_central
(&
F
,
gsl_vector_get
(x,
i
),
h
, &
result
, &
error
);
40
gsl_vector_set
(
grad
,
i
,
result
);
41
}
42
}
43
};
44
45
#endif
// GRADIENT_VAN_MISES_DISTANCE_SQ_DYNAMIC_WEIGHT_H
dirac_to_dirac_approx_short
Definition
dirac_to_dirac_approx_short.h:9
gradient_van_mises_distance_sq_dynamic_weight
Definition
gradient_van_mises_distance_sq_dynamic_weight.h:10
gsl_multivariative_gradient_template
Definition
gsl_multivariative_gradient_template.h:10
DiracToDiracVariableWeightOptimizationParams
optimization parameters for the GMToDirac approximation with variable weights
Definition
dirac_to_dirac_optimization_params.h:211
lib
gsl_multivariative_gradient
gradient_van_mises_distance_sq_dynamic_weight.h
Generated by
1.9.8