diff --git a/src/operator/DivImpl.cpp b/src/operator/DivImpl.cpp
index 292a3b56682889051fd48b53382e5030f4e1ee50..729aff2452b46f00eb6d3e0b558c0b3d58ea2f0e 100644
--- a/src/operator/DivImpl.cpp
+++ b/src/operator/DivImpl.cpp
@@ -91,16 +91,10 @@ void Aidge::DivImpl_cpu::forward() {
     std::size_t contiguousIdx = nbDims - 1;
     for (; contiguousIdx+1 > 0; --contiguousIdx) {
         if (dims0[contiguousIdx] != dims1[contiguousIdx]) {
-            if (contiguousIdx == (nbDims -1)) {
-                if (dims0[contiguousIdx] == 1) {
-                    while ((dims0[contiguousIdx] == 1) && (contiguousIdx+1 > 0)) {
-                        --contiguousIdx;
-                    }
-                }
-                else {
-                    while ((dims1[contiguousIdx] == 1) && (contiguousIdx+1 > 0)) {
-                        --contiguousIdx;
-                    }
+            if (contiguousIdx == (nbDims -1)) { // last dimensions of one of the input Tensor are of size 1
+                const std::vector<std::size_t>& dims = (dims0[contiguousIdx] == 1) ? dims0 : dims1;
+                while ((contiguousIdx+1 > 0) && (dims[contiguousIdx] == 1)) {
+                    --contiguousIdx;
                 }
             }
             break;