diff --git a/src/operator/Add.cpp b/src/operator/Add.cpp
index 6bafb3b7905ae36e23af32f8d60be33a4ba178bf..9b77ffcbe0117292ed0aa520309febf709e8dd68 100644
--- a/src/operator/Add.cpp
+++ b/src/operator/Add.cpp
@@ -63,7 +63,8 @@ bool Aidge::Add_Op::forwardDims(bool /*allowDataDependency*/) {
                         *it = dim;
                     }
                     else if ((dim != *it) && (dim != 1)) {
-                        AIDGE_THROW_OR_ABORT(std::runtime_error, "Unsupported Tensor shape for Add operation: {}", outDims);
+                        AIDGE_THROW_OR_ABORT(std::runtime_error, "Incompatible Tensor shape for Add Operation: {} for previous inputs vs {} for input#{}",
+                            outDims, getInput(i)->dims(), i);
                     }
                 }
             }
diff --git a/src/operator/Div.cpp b/src/operator/Div.cpp
index 813ab774b11cd72f440d28f61843500686d7df2d..e6300d08c2c792c8a3eb66b307aca53f9d2acc73 100644
--- a/src/operator/Div.cpp
+++ b/src/operator/Div.cpp
@@ -44,7 +44,8 @@ bool Aidge::Div_Op::forwardDims(bool /*allowDataDependency*/) {
                 outDims[out_id] = lowDims[low_id];
             }
             else if ((lowDims[low_id] != 1) && (lowDims[low_id] != outDims[out_id])) {
-                AIDGE_THROW_OR_ABORT(std::runtime_error, "Unsupported Tensor shape for Div Operation: {}", outDims);
+                AIDGE_THROW_OR_ABORT(std::runtime_error, "Incompatible Tensor shape for Div Operation: {} for input#0 vs {} for input#1",
+                    inputsDims0, inputsDims1);
             }
             --out_id;
             --low_id;
diff --git a/src/operator/Mul.cpp b/src/operator/Mul.cpp
index 5a25e4dd447f44220dbe4124e63f567520ad8d1e..426de388f31391fb5e59446d50e50de94ca5f8a1 100644
--- a/src/operator/Mul.cpp
+++ b/src/operator/Mul.cpp
@@ -45,7 +45,8 @@ bool Aidge::Mul_Op::forwardDims(bool /*allowDataDependency*/) {
                 outDims[out_id] = lowDims[low_id];
             }
             else if ((lowDims[low_id] != 1) && (lowDims[low_id] != outDims[out_id])) {
-                AIDGE_THROW_OR_ABORT(std::runtime_error, "Unsupported Tensor shape for Mul Operation: {}", outDims);
+                AIDGE_THROW_OR_ABORT(std::runtime_error, "Incompatible Tensor shape for Mul Operation: {} for input#0 vs {} for input#1",
+                    inputsDims0, inputsDims1);
             }
             --out_id;
             --low_id;
@@ -53,9 +54,6 @@ bool Aidge::Mul_Op::forwardDims(bool /*allowDataDependency*/) {
         mOutputs[0]->resize(outDims);
         return true;
     }
-    else if (!getInput(0)->empty() && !getInput(1)->empty()) {
-        AIDGE_THROW_OR_ABORT(std::runtime_error, "Incompatible input dimensions for Operator Mul: {} and {}", getInput(0)->dims(), getInput(1)->dims());
-    }
 
     return false;
 }
diff --git a/src/operator/Pow.cpp b/src/operator/Pow.cpp
index 42715516e6804c1a48ef848fbda8f9d596f0e69e..135c792345b0caf1166e671a8dad7d5b49b42ee7 100644
--- a/src/operator/Pow.cpp
+++ b/src/operator/Pow.cpp
@@ -44,7 +44,8 @@ bool Aidge::Pow_Op::forwardDims(bool /*allowDataDependency*/) {
                 outDims[out_id] = lowDims[low_id];
             }
             else if ((lowDims[low_id] != 1) && (lowDims[low_id] != outDims[out_id])) {
-                AIDGE_THROW_OR_ABORT(std::runtime_error, "Unsupported Tensor shape for Pow Operation: {}", outDims);
+                AIDGE_THROW_OR_ABORT(std::runtime_error, "Incompatible Tensor shape for Pow Operation: {} for input#0 vs {} for input#1",
+                    inputsDims0, inputsDims1);
             }
             --out_id;
             --low_id;
diff --git a/src/operator/Sub.cpp b/src/operator/Sub.cpp
index 50e556ad97a90b7a9868594cebe350d955983fd7..b977f4ee7ccce32d7f7929cbee99140aea36cd2f 100644
--- a/src/operator/Sub.cpp
+++ b/src/operator/Sub.cpp
@@ -46,7 +46,8 @@ bool Aidge::Sub_Op::forwardDims(bool /*allowDataDependency*/) {
                 outDims[out_id] = lowDims[low_id];
             }
             else if ((lowDims[low_id] != 1) && (lowDims[low_id] != outDims[out_id])) {
-                AIDGE_THROW_OR_ABORT(std::runtime_error, "Unsupported Tensor shape for Sub Operation: {}", outDims);
+                AIDGE_THROW_OR_ABORT(std::runtime_error, "Incompatible Tensor shape for Sub Operation: {} for input#0 vs {} for input#1",
+                    inputsDims0, inputsDims1);
             }
             --out_id;
             --low_id;