SourceXtractorPlusPlus  0.10
Please provide a description of the project.
ExpSigmoidConverter.cpp
Go to the documentation of this file.
1 
23 #include <cmath>
24 #include <iostream>
25 
27 
28 namespace ModelFitting {
29 
30 using namespace std;
31 
33 
34 double ExpSigmoidConverter::worldToEngine(const double world_value) const {
35  if (world_value < m_min_value || world_value > m_max_value) {
36  throw Elements::Exception()
37  << "WorldToEngine ExpSigmoidConverter: world values outside of possible range";
38  }
39  return log(log(world_value / m_min_value) / log(m_max_value / world_value));
40 }
41 
42 
43 double ExpSigmoidConverter::engineToWorld(const double engine_value) const {
44  return m_min_value * exp( log(m_max_value / m_min_value) / (1 + exp(-engine_value)) );
45 }
46 
47 double ExpSigmoidConverter::getEngineToWorldDerivative(const double value) const {
48  return value * log(value - m_min_value) * log(m_max_value - value) / log(m_max_value - m_min_value);
49 }
50 
51 
52 }// namespace ModelFitting
T exp(T... args)
T log(T... args)
STL namespace.
double getEngineToWorldDerivative(const double value) const override
double engineToWorld(const double engine_value) const override
Engine to world coordinate converter.
virtual ~ExpSigmoidConverter()
Destructor.
double worldToEngine(const double world_value) const override
World to engine coordinate converter.