@@ -903,16 +903,8 @@ namespace xt
903903 for (size_type i = 0 ; i < outer_shape.size (); i++)
904904 {
905905 auto d_idx = n / stride_sizes[i];
906- if (d_idx < outer_shape[i])
907- {
908- outer_index[i] = d_idx;
909- n -= d_idx * stride_sizes[i];
910- }
911- else
912- {
913- // that may not happen
914- outer_index[i] = 0 ;
915- }
906+ outer_index[i] = d_idx;
907+ n -= d_idx * stride_sizes[i];
916908 }
917909 }
918910 };
@@ -959,12 +951,8 @@ namespace xt
959951 {
960952 i--;
961953 auto d_idx = n / stride_sizes[i];
962- if (d_idx < (outer_shape[i] - 1 ))
963- {
964- outer_index[i] = d_idx;
965- n -= d_idx * stride_sizes[i];
966- }
967- // else {} // that may not happen
954+ outer_index[i] = d_idx;
955+ n -= d_idx * stride_sizes[i];
968956 }
969957 }
970958 };
@@ -1023,13 +1011,13 @@ namespace xt
10231011 const strides_type& m_strides;
10241012 };
10251013
1026- template <bool possible = true , class E1 , class E2 , std::enable_if_t <!has_strides<E1 >::value || !has_strides< E2 >::value || ! possible, bool > = true >
1014+ template <bool possible = true , class E1 , class E2 , std::enable_if_t <!has_strides<E1 >::value || !possible, bool > = true >
10271015 loop_sizes_t get_loop_sizes (const E1 & e1 , const E2 &)
10281016 {
10291017 return {false , true , 1 , e1 .size (), e1 .dimension (), e1 .dimension ()};
10301018 }
10311019
1032- template <bool possible = true , class E1 , class E2 , std::enable_if_t <has_strides<E1 >::value && has_strides< E2 >::value && possible, bool > = true >
1020+ template <bool possible = true , class E1 , class E2 , std::enable_if_t <has_strides<E1 >::value && possible, bool > = true >
10331021 loop_sizes_t get_loop_sizes (const E1 & e1 , const E2 & e2 )
10341022 {
10351023 using shape_value_type = typename E1 ::shape_type::value_type;
0 commit comments