diff --git a/src/algebra/TinyMatrix.hpp b/src/algebra/TinyMatrix.hpp
index 4f4d6a97453be47214d656c075d62973a6f4adf1..38d8c28393bb059b636ce8885b0cb68da5ad79a1 100644
--- a/src/algebra/TinyMatrix.hpp
+++ b/src/algebra/TinyMatrix.hpp
@@ -45,14 +45,20 @@ class TinyMatrix
     for (size_t i = 0; i < N * N; ++i) {
       opposed.m_values[i] = -m_values[i];
     }
-    return std::move(opposed);
+    return opposed;
   }
 
   PUGS_INLINE
   constexpr friend TinyMatrix operator*(const T& t, const TinyMatrix& A)
   {
     TinyMatrix B = A;
-    return std::move(B *= t);
+    return B *= t;
+  }
+
+  PUGS_INLINE
+  constexpr friend TinyMatrix operator*(const T& t, TinyMatrix&& A)
+  {
+    return std::move(A *= t);
   }
 
   PUGS_INLINE
@@ -79,7 +85,7 @@ class TinyMatrix
         AB(i, j) = sum;
       }
     }
-    return std::move(AB);
+    return AB;
   }
 
   PUGS_INLINE
@@ -94,7 +100,7 @@ class TinyMatrix
       }
       Ax[i] = sum;
     }
-    return std::move(Ax);
+    return Ax;
   }
 
   PUGS_INLINE
@@ -143,7 +149,7 @@ class TinyMatrix
     for (size_t i = 0; i < N * N; ++i) {
       sum.m_values[i] = m_values[i] + A.m_values[i];
     }
-    return std::move(sum);
+    return sum;
   }
 
   PUGS_INLINE
@@ -164,7 +170,7 @@ class TinyMatrix
     for (size_t i = 0; i < N * N; ++i) {
       difference.m_values[i] = m_values[i] - A.m_values[i];
     }
-    return std::move(difference);
+    return difference;
   }
 
   PUGS_INLINE
@@ -306,7 +312,7 @@ tensorProduct(const TinyVector<N, T>& x, const TinyVector<N, T>& y)
       A(i, j) = x[i] * y[j];
     }
   }
-  return std::move(A);
+  return A;
 }
 
 template <size_t N, typename T>
@@ -404,7 +410,7 @@ getMinor(const TinyMatrix<N, T>& A, const size_t& I, const size_t& J)
       M(i - 1, j - 1) = A(i, j);
     }
   }
-  return std::move(M);
+  return M;
 }
 
 template <size_t N, typename T>
@@ -418,7 +424,7 @@ inverse(const TinyMatrix<1, T>& A)
   static_assert(std::is_floating_point<T>::value, "inverse is defined for floating point types only");
 
   TinyMatrix<1, T> A_1(1. / A(0, 0));
-  return std::move(A_1);
+  return A_1;
 }
 
 template <size_t N, typename T>
@@ -442,7 +448,7 @@ inverse(const TinyMatrix<2, T>& A)
   const T inv_determinent = 1. / determinent;
 
   TinyMatrix<2, T> A_cofactors_T(A(1, 1), -A(0, 1), -A(1, 0), A(0, 0));
-  return std::move(A_cofactors_T *= inv_determinent);
+  return A_cofactors_T *= inv_determinent;
 }
 
 template <typename T>
@@ -458,7 +464,7 @@ inverse(const TinyMatrix<3, T>& A)
                                  cofactor(A, 1, 1), cofactor(A, 2, 1), cofactor(A, 0, 2), cofactor(A, 1, 2),
                                  cofactor(A, 2, 2));
 
-  return std::move(A_cofactors_T *= 1. / determinent);
+  return A_cofactors_T *= 1. / determinent;
 }
 
 #endif   // TINYMATRIX_HPP
diff --git a/src/algebra/TinyVector.hpp b/src/algebra/TinyVector.hpp
index ba4db3f02dca387ccdb435cd2634a2c4eb8016e3..187c405ee0a3f2007aeb9d98e2b403cbcf472ee7 100644
--- a/src/algebra/TinyVector.hpp
+++ b/src/algebra/TinyVector.hpp
@@ -39,7 +39,7 @@ class TinyVector
     for (size_t i = 0; i < N; ++i) {
       opposed.m_values[i] = -m_values[i];
     }
-    return std::move(opposed);
+    return opposed;
   }
 
   PUGS_INLINE
@@ -74,7 +74,7 @@ class TinyVector
     for (size_t i = 1; i < N; ++i) {
       t += m_values[i] * v.m_values[i];
     }
-    return std::move(t);
+    return t;
   }
 
   PUGS_INLINE
@@ -91,7 +91,7 @@ class TinyVector
   constexpr friend TinyVector operator*(const T& t, const TinyVector& v)
   {
     TinyVector w = v;
-    return std::move(w *= t);
+    return w *= t;
   }
 
   PUGS_INLINE
@@ -121,7 +121,7 @@ class TinyVector
     for (size_t i = 0; i < N; ++i) {
       sum.m_values[i] = m_values[i] + v.m_values[i];
     }
-    return std::move(sum);
+    return sum;
   }
 
   PUGS_INLINE
@@ -142,7 +142,7 @@ class TinyVector
     for (size_t i = 0; i < N; ++i) {
       difference.m_values[i] = m_values[i] - v.m_values[i];
     }
-    return std::move(difference);
+    return difference;
   }
 
   PUGS_INLINE
@@ -262,7 +262,7 @@ PUGS_INLINE constexpr TinyVector<3, T>
 crossProduct(const TinyVector<3, T>& u, const TinyVector<3, T>& v)
 {
   TinyVector<3, T> cross_product(u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[1] - u[1] * v[0]);
-  return std::move(cross_product);
+  return cross_product;
 }
 
 #endif   // TINYVECTOR_HPP