class ngraph::pass::low_precision::QuantizationDetails

#include <quantization_details.hpp>

class QuantizationDetails
{
public:
    // fields

    const size_t levels;
    const std::vector<float> inputLowValues;
    const std::vector<float> inputHighValues;
    const std::vector<float> outputLowValues;
    const std::vector<float> outputHighValues;

    // construction

    QuantizationDetails();
    QuantizationDetails(const QuantizationDetails& quantizationDetails);

    QuantizationDetails(
        const size_t levels,
        const std::vector<float>& inputLowValues,
        const std::vector<float>& inputHighValues,
        const std::vector<float>& outputLowValues,
        const std::vector<float>& outputHighValues
        );

    // methods

    bool hasNegativeOutput() const;
    float maxOutput(const size_t channel) const;
    float maxInput(const size_t channel) const;
    float getInputLowValue(const size_t channel) const;
    float getInputHighValue(const size_t channel) const;
    float getOutputLowValue(const size_t channel) const;
    float getOutputHighValue(const size_t channel) const;
    bool empty() const;

    static bool outputLayoutIsSupported(
        std::shared_ptr<opset1::FakeQuantize> quantize,
        bool isConvertExpected = false
        );

    static void getInputIntervals(
        std::shared_ptr<opset1::FakeQuantize> quantize,
        std::vector<float>& inputLowValues,
        std::vector<float>& inputHighValues
        );

    static void getOutputIntervals(
        std::shared_ptr<opset1::FakeQuantize> quantize,
        std::vector<float>& outputLowValues,
        std::vector<float>& outputHighValues
        );

    static QuantizationDetails getDetails(std::shared_ptr<opset1::FakeQuantize>);
    static bool isSupportedLevel(const size_t level);
};