diff --git a/examples/quad-test/Quadcpp.cpp b/examples/quad-test/Quadcpp.cpp
index b5dc91d01e71c6682678d3d9d45ff817cc0e2032..7e83bb5bf1dfcd3b11d6baed0f4d599927bc4852 100644
--- a/examples/quad-test/Quadcpp.cpp
+++ b/examples/quad-test/Quadcpp.cpp
@@ -7,13 +7,20 @@ QuadDouble::QuadDouble() {
 	zeroQuad(data);
 }
 
-QuadDouble::QuadDouble(double value) {
+QuadDouble::QuadDouble(const double& value) {
 	data[0] = value;
 	data[1] = 0;
 	data[2] = 0;
 	data[3] = 0;
 }
 
+QuadDouble::QuadDouble(int value) {
+	data[0] = (double)value;
+	data[1] = 0;
+	data[2] = 0;
+	data[3] = 0;
+}
+
 QuadDouble::QuadDouble(const QuadDouble& other) {
 	data[0] = other[0];
 	data[1] = other[1];
@@ -67,7 +74,7 @@ QuadDouble& QuadDouble::operator /=(const QuadDouble& rhs) {
 	return *this;
 }
 
-QuadDouble& QuadDouble::operator =(double rhs) {
+QuadDouble& QuadDouble::operator =(const double& rhs) {
 	data[0] = rhs;
 	data[1] = 0;
 	data[2] = 0;
@@ -75,22 +82,22 @@ QuadDouble& QuadDouble::operator =(double rhs) {
 	return *this;
 }
 
-QuadDouble& QuadDouble::operator +=(double rhs) {
+QuadDouble& QuadDouble::operator +=(const double& rhs) {
 	doublePlusQuad(rhs, data, data);
 	return *this;
 }
 
-QuadDouble& QuadDouble::operator -=(double rhs) {
+QuadDouble& QuadDouble::operator -=(const double& rhs) {
 	doublePlusQuad(-rhs, data, data);
 	return *this;
 }
 
-QuadDouble& QuadDouble::operator *=(double rhs) {
+QuadDouble& QuadDouble::operator *=(const double& rhs) {
 	doubleTimesQuad(rhs, data, data);
 	return *this;
 }
 
-QuadDouble& QuadDouble::operator /=(double rhs) {
+QuadDouble& QuadDouble::operator /=(const double& rhs) {
 	quadDivDouble(data, rhs, data);
 	return *this;
 }
@@ -231,25 +238,25 @@ QuadDouble::operator double() const{
 	return data[0];
 }
 
-QuadDouble operator+(double v1, const QuadDouble& v2) {
+QuadDouble operator+(const double& v1, const QuadDouble& v2) {
     QuadDouble qd(v1);
     qd += v2;
     return qd;
 }
 
-QuadDouble operator-(double v1, const QuadDouble& v2) {
+QuadDouble operator-(const double& v1, const QuadDouble& v2) {
     QuadDouble qd(v1);
     qd -= v2;
     return qd;
 }
 
-QuadDouble operator*(double v1, const QuadDouble& v2) {
+QuadDouble operator*(const double& v1, const QuadDouble& v2) {
     QuadDouble qd(v1);
     qd *= v2;
     return qd;
 }
 
-QuadDouble operator/(double v1, const QuadDouble& v2) {
+QuadDouble operator/(const double& v1, const QuadDouble& v2) {
     QuadDouble qd(v1);
     qd /= v2;
     return qd;
diff --git a/examples/quad-test/Quadcpp.h b/examples/quad-test/Quadcpp.h
index b469816788fe8bc20dbc769834faf264aa3bd38e..7b87ea52bdca83b5185d47657fcd2ff935015066 100644
--- a/examples/quad-test/Quadcpp.h
+++ b/examples/quad-test/Quadcpp.h
@@ -3,8 +3,11 @@ private:
 public:
 	double data[4];
 	QuadDouble();
-	explicit QuadDouble(double);
+	explicit QuadDouble(const double&);
+   explicit QuadDouble(int);
+	//QuadDouble(double);
 	QuadDouble(const QuadDouble&);
+	
 	//QuadDouble(double*);
 	double& operator[](int);
 	const double& operator[](int) const;
@@ -13,11 +16,11 @@ public:
 	QuadDouble& operator -=(const QuadDouble&);
 	QuadDouble& operator *=(const QuadDouble&);
 	QuadDouble& operator /=(const QuadDouble&);
-	QuadDouble& operator =(double);
-	QuadDouble& operator +=(double);
-	QuadDouble& operator -=(double);
-	QuadDouble& operator *=(double);
-	QuadDouble& operator /=(double);
+	QuadDouble& operator =(const double&);
+	QuadDouble& operator +=(const double&);
+	QuadDouble& operator -=(const double&);
+	QuadDouble& operator *=(const double&);
+	QuadDouble& operator /=(const double&);
 	QuadDouble operator +(const QuadDouble&) const;
 	QuadDouble operator -(const QuadDouble&) const;
 	QuadDouble operator *(const QuadDouble&) const;
diff --git a/src/matrix/tnlCSRMatrix.h b/src/matrix/tnlCSRMatrix.h
index bf694991b3b31332e7f00b1e7da0bd5e08fb2a40..80584d3c113c0e988eb11aa4ca13d66ee0221c58 100644
--- a/src/matrix/tnlCSRMatrix.h
+++ b/src/matrix/tnlCSRMatrix.h
@@ -307,7 +307,7 @@ bool tnlCSRMatrix< Real, Device, Index > :: setNonzeroElements( Index elements )
 {
    if( ! nonzero_elements. setSize( elements ) )
       return false;
-   nonzero_elements. setValue( 0 );
+   nonzero_elements. setValue( (Real) 0 );
    if( ! columns. setSize( elements ) )
       return false;
    columns. setValue( -1 );