101    const std::vector<int>& axes,
 
  110    U* out_ptr = out.
data<U>();
 
  112    opc(x.
data<T>(), out_ptr, x.
size());
 
  116  std::vector<int> shape;
 
  117  std::vector<size_t> strides;
 
  120    int reduction_size = plan.
shape[0];
 
  121    const T* x_ptr = x.
data<T>();
 
  122    U* out_ptr = out.
data<U>();
 
  123    for (
int i = 0; i < out.
size(); i++, out_ptr++, x_ptr += reduction_size) {
 
  125      opc(x_ptr, out_ptr, reduction_size);
 
  131    int reduction_size = plan.
shape.back();
 
  132    plan.
shape.pop_back();
 
  134    const T* x_ptr = x.
data<T>();
 
  135    U* out_ptr = out.
data<U>();
 
  139    if (plan.
shape.size() == 0) {
 
  140      for (
int i = 0; i < out.
size(); i++, out_ptr++) {
 
  143        opc(x_ptr + offset, out_ptr, reduction_size);
 
  146      for (
int i = 0; i < out.
size(); i++, out_ptr++) {
 
  150            [&](
int extra_offset) {
 
  151              opc(x_ptr + offset + extra_offset, out_ptr, reduction_size);
 
  161    int reduction_size = plan.
shape.back();
 
  162    size_t reduction_stride = plan.
strides.back();
 
  163    plan.
shape.pop_back();
 
  165    const T* x_ptr = x.
data<T>();
 
  166    U* out_ptr = out.
data<U>();
 
  167    for (
int i = 0; i < out.
size(); i += reduction_stride) {
 
  168      std::fill_n(out_ptr, reduction_stride, init);
 
  169      ops(x_ptr, out_ptr, reduction_size, reduction_stride);
 
  170      x_ptr += reduction_stride * reduction_size;
 
  171      out_ptr += reduction_stride;
 
  178    int reduction_size = plan.
shape.back();
 
  179    size_t reduction_stride = plan.
strides.back();
 
  180    plan.
shape.pop_back();
 
  182    const T* x_ptr = x.
data<T>();
 
  183    U* out_ptr = out.
data<U>();
 
  185    if (plan.
shape.size() == 0) {
 
  186      for (
int i = 0; i < out.
size(); i += reduction_stride) {
 
  188        std::fill_n(out_ptr, reduction_stride, init);
 
  189        ops(x_ptr + offset, out_ptr, reduction_size, reduction_stride);
 
  190        out_ptr += reduction_stride;
 
  193      for (
int i = 0; i < out.
size(); i += reduction_stride) {
 
  195        std::fill_n(out_ptr, reduction_stride, init);
 
  197            [&](
int extra_offset) {
 
  198              ops(x_ptr + offset + extra_offset,
 
  205        out_ptr += reduction_stride;
 
  212    const T* x_ptr = x.
data<T>();
 
  213    U* out_ptr = out.
data<U>();
 
  215    for (
int i = 0; i < out.
size(); i++, out_ptr++) {
 
  219          [&](
int extra_offset) { 
op(&val, *(x_ptr + offset + extra_offset)); },
 
 
array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
Computes the standard deviation of the elements of an array.
 
void reduction_op(const array &x, array &out, const std::vector< int > &axes, U init, OpS ops, OpC opc, Op op)
Definition reduce.h:98