namespace ngraph::runtime::reference::internal

namespace internal {

// global functions

void row_major_strides(const Shape& shape, size_t \* strides, size_t size);

template <typename C, typename T>
T value_with_padding_or(
    const C& arr,
    size_t padding,
    size_t idx,
    T&& default_value
    );

template <int A0, int A1, typename T, typename U, typename Functor>
void numpy_autobroadcast_binop(
    const T \* arg0,
    const T \* arg1,
    U \* out,
    const Shape& shape0,
    const Shape& shape1,
    const size_t \* strides0,
    const size_t \* strides1,
    const size_t padding0,
    const size_t padding1,
    const Shape& output_shape,
    const size_t axis,
    const size_t stride,
    Functor elementwise_functor
    );

size_t calculate_fixed_axis(size_t axis, const size_t \* strides);

} // namespace internal