#include <layer_transformation.hpp>
class DataPrecision
{
public:
// fields
element::Type precision;
float min;
float max;
bool hasZeroPoint;
// construction
DataPrecision();
DataPrecision(const element::Type& precision);
DataPrecision(
const element::Type precision,
const float min,
const float max,
const bool hasZeroPoint
);
// methods
bool empty() const;
static bool isSupported(const element::Type& precision);
static float getMinValue(const element::Type precision, const size_t levels);
static float getMaxValue(const element::Type precision, const size_t levels);
static float getMaxValue(const size_t maxLevelsForPrecision);
static bool hasNegativeValues(const std::vector<float>& values);
static element::Type getPrecision(
const std::vector<float>& outputLowValues,
const std::vector<float>& outputHighValues
);
static element::Type getPrecision(const size_t, const bool signedInterval);
};