diff --git a/MathLib/LinAlg/Dense/DenseMatrix-impl.h b/MathLib/LinAlg/Dense/DenseMatrix-impl.h index ef710200a19a5f923e0c62189bd66267f4981f2d..21893c658c7783bd9ef2548fb97098b6ffc1265a 100644 --- a/MathLib/LinAlg/Dense/DenseMatrix-impl.h +++ b/MathLib/LinAlg/Dense/DenseMatrix-impl.h @@ -89,6 +89,14 @@ DenseMatrix<FP_TYPE, IDX_TYPE>::operator=(DenseMatrix && rhs) return *this; } +template<typename FP_TYPE, typename IDX_TYPE> +DenseMatrix<FP_TYPE, IDX_TYPE>& +DenseMatrix<FP_TYPE, IDX_TYPE>::operator=(FP_TYPE const& v) +{ + std::fill(this->_data, this->_data + this->_n_rows * this->_n_cols, static_cast<FP_TYPE>(v)); + return *this; +} + template<typename FP_TYPE, typename IDX_TYPE> void DenseMatrix<FP_TYPE, IDX_TYPE>::axpy(FP_TYPE alpha, const FP_TYPE* x, FP_TYPE beta, FP_TYPE* y) const diff --git a/MathLib/LinAlg/Dense/DenseMatrix.h b/MathLib/LinAlg/Dense/DenseMatrix.h index 1cfabae56cb8cf95d2c21a4dd91854dffe468319..578afa3319cb30ccb2cbfaf727b16bc1759aff0b 100644 --- a/MathLib/LinAlg/Dense/DenseMatrix.h +++ b/MathLib/LinAlg/Dense/DenseMatrix.h @@ -33,7 +33,7 @@ public: public: /// Dense square matrix constructor. - DenseMatrix (IDX_TYPE rows) : DenseMatrix(rows, rows) {} + explicit DenseMatrix (IDX_TYPE rows) : DenseMatrix(rows, rows) {}; /// Dense rectangular matrix constructor. DenseMatrix (IDX_TYPE rows, IDX_TYPE cols); @@ -70,6 +70,11 @@ public: */ DenseMatrix& operator=(DenseMatrix && rhs); + /** + * Assignment operator + */ + DenseMatrix& operator=(FP_TYPE const& v); + /** * \f$ y = \alpha \cdot A x + \beta y\f$ */