namespace ngraph::runtime::reference::fake_quantize_details

namespace fake_quantize_details {

// classes

template <typename T>
class QuantizationBound;

// global functions

std::vector<size_t> calc_broadcast_index_offset(
    const std::vector<size_t>& memory_offsets,
    const std::vector<size_t>& broadcast_shape
    );

size_t calc_full_broadcast_offset(
    const std::vector<size_t>& current_dims,
    const std::vector<size_t>& offsets
    );

Shape align_shape_sizes(
    const Shape& shape,
    const Shape& target_shape,
    const op::AutoBroadcastSpec& broadcast
    );

void increment_current_dim(
    std::vector<size_t>& current_dims,
    const std::vector<size_t>& shape
    );

template <typename T>
T quantize(
    const T& arg,
    const T& in_low,
    const T& in_high,
    const T& out_low,
    const T& out_high,
    const size_t& levels
    );

} // namespace fake_quantize_details