#include <fake_quantize_dequantization.hpp>
class FakeQuantizeDequantization
{
public:
// fields
Output<Node> data;
std::shared_ptr<opset1::Convert> convert;
std::shared_ptr<opset1::Subtract> subtract;
std::shared_ptr<ngraph::opset1::Convert> subtractConvert;
std::shared_ptr<ngraph::opset1::Constant> subtractConstant;
std::shared_ptr<opset1::Multiply> multiply;
std::shared_ptr<ngraph::opset1::Constant> multiplyConstant;
// construction
FakeQuantizeDequantization();
FakeQuantizeDequantization(
const Output<Node>& data,
const std::shared_ptr<ngraph::opset1::Convert>& convert,
const std::shared_ptr<ngraph::opset1::Subtract>& subtract,
const std::shared_ptr<ngraph::opset1::Convert>& subtractConvert,
const std::shared_ptr<ngraph::opset1::Constant>& subtractConstant,
const std::shared_ptr<ngraph::opset1::Multiply>& multiply,
const std::shared_ptr<ngraph::opset1::Constant>& multiplyConstant
);
// methods
bool empty() const;
bool multiplyHasZeroOrDenormal() const;
bool isShared() const;
bool isLowPrecision() const;
std::shared_ptr<Node> copyWithNewInput(const std::shared_ptr<Node>& input) const;
static bool checkElementwise(const std::shared_ptr<ngraph::Node>& elementwise);
static bool checkShape(const std::shared_ptr<ngraph::Node>& elementwise);
static int fillDequantizationParams(
const std::shared_ptr<ngraph::Node>& elementwise,
std::shared_ptr<ngraph::opset1::Convert>& convert,
std::shared_ptr<ngraph::opset1::Constant>& constant
);
static int fillDequantizationParams(
const std::shared_ptr<ngraph::Node>& elementwise,
std::shared_ptr<ngraph::opset1::Constant>& constant
);
};