7template <
class DataPo
int,
class _NFilter,
typename T>
8 requires GLS_PARAM_REQUIREMENTS
9inline FIT_RESULT GLSParam<DataPoint, _NFilter, T>::finalize()
13 if (bResult != UNDEFINED)
15 m_fitness = Scalar(1.) - Base::prattNorm2();
21template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
22 requires GLS_DER_REQUIREMENTS
23typename GLSDer<DataPoint, _NFilter, DiffType, T>::ScalarArray GLSDer<DataPoint, _NFilter, DiffType, T>::dtau()
const
25 PONCA_MULTIARCH_STD_MATH(sqrt);
27 Scalar prattNorm2 = Base::prattNorm2();
28 Scalar prattNorm = sqrt(prattNorm2);
29 Scalar cfactor = Scalar(.5) / prattNorm;
30 ScalarArray dfield = Base::m_dUc;
33 if (Base::isSpaceDer())
34 dfield.template tail<DataPoint::Dim>() += Base::m_ul;
36 return (dfield * prattNorm - Base::m_uc * cfactor * Base::dprattNorm2()) / prattNorm2;
39template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
40 requires GLS_DER_REQUIREMENTS
41typename GLSDer<DataPoint, _NFilter, DiffType, T>::VectorArray GLSDer<DataPoint, _NFilter, DiffType, T>::deta()
const
43 return Base::dNormal();
46template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
47 requires GLS_DER_REQUIREMENTS
48typename GLSDer<DataPoint, _NFilter, DiffType, T>::ScalarArray GLSDer<DataPoint, _NFilter, DiffType, T>::dkappa()
const
50 PONCA_MULTIARCH_STD_MATH(sqrt);
52 Scalar prattNorm2 = Base::prattNorm2();
53 Scalar prattNorm = sqrt(prattNorm2);
54 Scalar cfactor = Scalar(.5) / prattNorm;
56 return Scalar(2.) * (Base::m_dUq * prattNorm - Base::m_uq * cfactor * Base::dprattNorm2()) / prattNorm2;
59template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
60 requires GLS_DER_REQUIREMENTS
61typename GLSDer<DataPoint, _NFilter, DiffType, T>::ScalarArray GLSDer<DataPoint, _NFilter,
DiffType,
62 T>::dtau_normalized()
const
67template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
68 requires GLS_DER_REQUIREMENTS
69typename GLSDer<DataPoint, _NFilter, DiffType, T>::VectorArray GLSDer<DataPoint, _NFilter,
DiffType,
70 T>::deta_normalized()
const
72 return Base::getNeighborFilter().evalScale() * deta();
75template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
76 requires GLS_DER_REQUIREMENTS
77typename GLSDer<DataPoint, _NFilter, DiffType, T>::ScalarArray GLSDer<DataPoint, _NFilter,
DiffType,
78 T>::dkappa_normalized()
const
80 return dkappa() * Base::getNeighborFilter().evalScale() * Base::getNeighborFilter().evalScale();
83template <
class DataPo
int,
class _NFilter,
int DiffType,
typename T>
84 requires GLS_DER_REQUIREMENTS
85typename GLSDer<DataPoint, _NFilter, DiffType, T>::Scalar GLSDer<DataPoint, _NFilter, DiffType, T>::geomVar(
86 Scalar wtau, Scalar weta, Scalar wkappa)
const
89 Scalar dtau = dtau_normalized().col(0)(0);
90 Scalar deta = deta_normalized().col(0).norm();
91 Scalar dkappa = dkappa_normalized().col(0)(0);
93 return wtau * dtau * dtau + weta * deta * deta + wkappa * dkappa * dkappa;
DiffType
Flags defining which derivatives need to be computed.
FIT_RESULT
Enum corresponding to the state of a fitting method (and what the finalize function returns).