diff --git a/src/language/utils/ASTNodeNaturalConversionChecker.cpp b/src/language/utils/ASTNodeNaturalConversionChecker.cpp
index 7a1a30c9ca5d582aea9a47458bd95c93ab80465a..043818697009386155b8341c7b46ae11f1afc940 100644
--- a/src/language/utils/ASTNodeNaturalConversionChecker.cpp
+++ b/src/language/utils/ASTNodeNaturalConversionChecker.cpp
@@ -13,7 +13,9 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalTypeConversion(
 {
   if (not isNaturalConversion(data_type, target_data_type)) {
     if constexpr (std::is_same_v<RToR1ConversionStrategy, AllowRToR1Conversion>) {
-      if ((target_data_type == ASTNodeDataType::vector_t) and (target_data_type.dimension() == 1)) {
+      if (((target_data_type == ASTNodeDataType::vector_t) and (target_data_type.dimension() == 1)) or
+          ((target_data_type == ASTNodeDataType::matrix_t) and (target_data_type.nbRows() == 1) and
+           (target_data_type.nbColumns() == 1))) {
         if (isNaturalConversion(data_type, ASTNodeDataType::build<ASTNodeDataType::double_t>())) {
           return;
         }
@@ -48,7 +50,10 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve
     case ASTNodeDataType::list_t: {
       const auto& content_type_list = data_type.contentTypeList();
       if (content_type_list.size() != target_data_type.dimension()) {
-        throw ParseError("incompatible dimensions in affectation", std::vector{node.begin()});
+        std::ostringstream os;
+        os << "incompatible dimensions in affectation: expecting " << target_data_type.dimension() << ", but provided "
+           << content_type_list.size();
+        throw ParseError(os.str(), std::vector{node.begin()});
       }
 
       Assert(content_type_list.size() == node.children.size());
@@ -89,7 +94,10 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve
     case ASTNodeDataType::list_t: {
       const auto& content_type_list = data_type.contentTypeList();
       if (content_type_list.size() != (target_data_type.nbRows() * target_data_type.nbColumns())) {
-        throw ParseError("incompatible dimensions in affectation", std::vector{node.begin()});
+        std::ostringstream os;
+        os << "incompatible dimensions in affectation: expecting "
+           << target_data_type.nbRows() * target_data_type.nbColumns() << ", but provided " << content_type_list.size();
+        throw ParseError(os.str(), std::vector{node.begin()});
       }
 
       Assert(content_type_list.size() == node.children.size());
diff --git a/tests/test_ASTNodeFunctionExpressionBuilder.cpp b/tests/test_ASTNodeFunctionExpressionBuilder.cpp
index 5a071366578271161d21a27d2ce0d5e883f9c7c3..75ba4decb1af5b72f1d993b0e3041eb729d349d8 100644
--- a/tests/test_ASTNodeFunctionExpressionBuilder.cpp
+++ b/tests/test_ASTNodeFunctionExpressionBuilder.cpp
@@ -785,7 +785,9 @@ let f : R^2 -> R, x->x[0];
 f((1,2,3));
 )";
 
-        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data, std::string{"incompatible dimensions in affectation"});
+        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data,
+                                             std::string{
+                                               "incompatible dimensions in affectation: expecting 2, but provided 3"});
       }
 
       SECTION("tuple[2] -> R^3")
@@ -795,7 +797,9 @@ let f : R^3 -> R, x->x[0];
 f((1,2));
 )";
 
-        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data, std::string{"incompatible dimensions in affectation"});
+        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data,
+                                             std::string{
+                                               "incompatible dimensions in affectation: expecting 3, but provided 2"});
       }
 
       SECTION("compound tuple[3] -> R^2")
@@ -805,7 +809,9 @@ let f : R*R^2 -> R, (t,x)->x[0];
 f(1,(1,2,3));
 )";
 
-        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data, std::string{"incompatible dimensions in affectation"});
+        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data,
+                                             std::string{
+                                               "incompatible dimensions in affectation: expecting 2, but provided 3"});
       }
 
       SECTION("compound tuple[2] -> R^3")
@@ -815,7 +821,9 @@ let f : R^3*R^2 -> R, (x,y)->x[0]*y[1];
 f((1,2),(3,4));
 )";
 
-        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data, std::string{"incompatible dimensions in affectation"});
+        CHECK_EXPRESSION_BUILDER_THROWS_WITH(data,
+                                             std::string{
+                                               "incompatible dimensions in affectation: expecting 3, but provided 2"});
       }
 
       SECTION("list instead of tuple -> R^3")
diff --git a/tests/test_ASTNodeNaturalConversionChecker.cpp b/tests/test_ASTNodeNaturalConversionChecker.cpp
index 0142271ce7c0b9ed9421a07ca81497d6b6f1f41f..a9e10344d3f6eaacd1ac6fde102b1d4b82214927 100644
--- a/tests/test_ASTNodeNaturalConversionChecker.cpp
+++ b/tests/test_ASTNodeNaturalConversionChecker.cpp
@@ -922,7 +922,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2,
                                                                                                                  2)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 4, but provided 1");
         }
 
         SECTION("d=3")
@@ -930,7 +930,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3,
                                                                                                                  3)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 9, but provided 1");
         }
       }
 
@@ -952,7 +952,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1,
                                                                                                                  1)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 1, but provided 2");
         }
 
         SECTION("d=3")
@@ -960,7 +960,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3,
                                                                                                                  3)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 9, but provided 2");
         }
       }
 
@@ -988,7 +988,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1,
                                                                                                                  1)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 1, but provided 3");
         }
 
         SECTION("d=2")
@@ -996,7 +996,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2,
                                                                                                                  2)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 4, but provided 3");
         }
       }
 
@@ -1338,14 +1338,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
         {
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(2)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 2, but provided 1");
         }
 
         SECTION("d=3")
         {
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(3)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 3, but provided 1");
         }
       }
 
@@ -1366,14 +1366,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
         {
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(1)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 1, but provided 2");
         }
 
         SECTION("d=3")
         {
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(3)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 3, but provided 2");
         }
       }
 
@@ -1400,14 +1400,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
         {
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(1)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 1, but provided 3");
         }
 
         SECTION("d=2")
         {
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(2)}),
-                              "incompatible dimensions in affectation");
+                              "incompatible dimensions in affectation: expecting 2, but provided 3");
         }
       }