49 const int width = in[0].shape()[0];
50 const int height = in[0].shape()[1];
51 const int depth = in[0].shape()[2];
52 const int batch_size = in[0].shape()[3];
53 const int num_tensors = in.size();
59 std::array<int, 6> i_coordinates{ 0 };
63 std::array<int *, 5> o_coordinates = { &i_coordinates[5], &i_coordinates[5], &i_coordinates[5], &i_coordinates[5], &i_coordinates[5] };
66 o_coordinates[axis] = &i_coordinates[4];
68 unsigned int k_shift = 0;
71 for(
unsigned int k = 0; k < in[0].shape().num_dimensions(); ++k)
78 o_coordinates[k + k_shift] = &i_coordinates[k];
82 int &xi = i_coordinates[0];
83 int &yi = i_coordinates[1];
84 int &zi = i_coordinates[2];
85 int &bi = i_coordinates[3];
86 int &i = i_coordinates[4];
89 int &xo = *(o_coordinates[0]);
90 int &yo = *(o_coordinates[1]);
91 int &zo = *(o_coordinates[2]);
92 int &bo = *(o_coordinates[3]);
93 int &wo = *(o_coordinates[4]);
96 for(; i < num_tensors; ++(i))
99 for(; bi < batch_size; ++(bi))
102 for(; zi < depth; ++(zi))
105 for(; yi < height; ++(yi))
108 for(; xi < width; ++(xi))
110 *(
reinterpret_cast<T *
>(out(
Coordinates(xo, yo, zo, bo, wo)))) = *(
reinterpret_cast<const T *
>(in[i](
Coordinates(xi, yi, zi, bi))));