// // Created by martin on 21.11.18. // #include <cmath> #include <stdexcept> #include <boost/serialization/export.hpp> #include "NormalizationStrategy.h" #include "NormalizationStrategySerialization.h" BOOST_CLASS_EXPORT_IMPLEMENT(NormalizationStrategy); BOOST_CLASS_EXPORT_IMPLEMENT(DoubleUnitStrategy); double NormalizationStrategy::get_max_value() { return this->max_value; } double NormalizationStrategy::get_min_value() { return this->min_value; } DoubleUnitStrategy::DoubleUnitStrategy() {} double DoubleUnitStrategy::normalize(double n, double max, double min) { this->max_value = max; this->min_value = min; return 2*(n - min)/(max - min) - 1; } double DoubleUnitStrategy::de_normalize(double n) { if(std::isnan(this->max_value)) { throw std::runtime_error("Data were not normalized, so de-normalization cannot progress!"); } return 0.5 * (1 + (this->max_value - this->min_value) * n) + this->min_value; }