Line data Source code
1 : #include "NdView.h" 2 : 3 : namespace elsa::detail 4 : { 5 : bool are_strides_compatible(const IndexVector_t& shape1, const IndexVector_t& strides1, 6 : const IndexVector_t& shape2, const IndexVector_t& strides2) 7 122 : { 8 122 : index_t dim_count = shape1.size(); 9 122 : if (dim_count != shape2.size()) { 10 0 : throw NdViewDimError(); 11 0 : } 12 122 : size_t element_count = 1; 13 122 : bool strides_compatible = true; 14 488 : for (index_t i = 0; i < dim_count; i++) { 15 366 : if (shape1(i) != shape2(i)) { 16 0 : throw NdViewDimError(); 17 0 : } 18 366 : strides_compatible &= strides1(i) == strides2(i); 19 366 : element_count *= shape1(i); 20 366 : } 21 122 : return strides_compatible; 22 122 : } 23 : } // namespace elsa::detail