diff --git a/src/language/utils/BinaryOperatorRegisterForRnxn.cpp b/src/language/utils/BinaryOperatorRegisterForRnxn.cpp
index b44f42e913f2f24a6aeaf7d538f02fc14133b457..3d8850e79a4129c9a2098baa14b869f48bb8d1ce 100644
--- a/src/language/utils/BinaryOperatorRegisterForRnxn.cpp
+++ b/src/language/utils/BinaryOperatorRegisterForRnxn.cpp
@@ -39,6 +39,19 @@ BinaryOperatorRegisterForRnxn<Dimension>::_register_product_by_a_scalar()
     std::make_shared<BinaryOperatorProcessorBuilder<language::multiply_op, Rnxn, double, Rnxn>>());
 }
 
+template <size_t Dimension>
+void
+BinaryOperatorRegisterForRnxn<Dimension>::_register_product_by_a_vector()
+{
+  OperatorRepository& repository = OperatorRepository::instance();
+
+  using Rnxn = TinyMatrix<Dimension>;
+  using Rn   = TinyVector<Dimension>;
+
+  repository.addBinaryOperator<language::multiply_op>(
+    std::make_shared<BinaryOperatorProcessorBuilder<language::multiply_op, Rn, Rnxn, Rn>>());
+}
+
 template <size_t Dimension>
 template <typename OperatorT>
 void
@@ -58,6 +71,7 @@ BinaryOperatorRegisterForRnxn<Dimension>::BinaryOperatorRegisterForRnxn()
   this->_register_comparisons();
 
   this->_register_product_by_a_scalar();
+  this->_register_product_by_a_vector();
 
   this->_register_arithmetic<language::plus_op>();
   this->_register_arithmetic<language::minus_op>();
diff --git a/src/language/utils/BinaryOperatorRegisterForRnxn.hpp b/src/language/utils/BinaryOperatorRegisterForRnxn.hpp
index 7efb4cbb8691c23cec22e5f82c5c7dae83b2b49c..594740b629b0a7201d64139fd8e2ce4a12b38cd2 100644
--- a/src/language/utils/BinaryOperatorRegisterForRnxn.hpp
+++ b/src/language/utils/BinaryOperatorRegisterForRnxn.hpp
@@ -10,6 +10,7 @@ class BinaryOperatorRegisterForRnxn
   void _register_comparisons();
 
   void _register_product_by_a_scalar();
+  void _register_product_by_a_vector();
 
   template <typename OperatorT>
   void _register_arithmetic();