namespace ngraph::runtime::reference

namespace reference {

// global functions

template <typename T, typename U, typename Functor>
void autobroadcast_binop(
    const T \* arg0,
    const T \* arg1,
    U \* out,
    const Shape& arg0_shape,
    const Shape& arg1_shape,
    const op::AutoBroadcastSpec& broadcast_spec,
    Functor elementwise_functor
    );

template <typename T, typename U, typename Functor>
void autobroadcast_select(
    const U \* arg0,
    const T \* arg1,
    const T \* arg2,
    T \* out,
    const Shape& arg0_shape,
    const Shape& arg1_shape,
    const Shape& arg2_shape,
    const op::AutoBroadcastSpec& broadcast_spec,
    Functor elementwise_functor
    );

template <typename T>
void power(
    const T \* arg0,
    const T \* arg1,
    T \* out,
    size_t count
    );

template <typename T>
void power(
    const T \* arg0,
    const T \* arg1,
    T \* out,
    const Shape& arg0_shape,
    const Shape& arg1_shape,
    const op::AutoBroadcastSpec& broadcast_spec
    );

template <typename T>
void softmax(
    const T \* arg,
    T \* out,
    const Shape& shape,
    const AxisSet& axes
    );

} // namespace reference