From 9c01a5280290e25e9620ba5e008ed529cf601d79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mate=CC=8Cj=20Novotny=CC=81?= <mates.novotny@gmail.com>
Date: Mon, 27 May 2013 17:09:47 +0200
Subject: [PATCH] Fixing QuadDouble and CSRMatrix.

Fixing parameters of operators to meet conventions and to allow compilation to be passed. Adding conversion from int to Real type in CSRMatrix to work with QuadDouble.
---
 examples/quad-test/Quadcpp.cpp | 27 +++++++++++++++++----------
 examples/quad-test/Quadcpp.h   | 15 +++++++++------
 src/matrix/tnlCSRMatrix.h      |  2 +-
 3 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/examples/quad-test/Quadcpp.cpp b/examples/quad-test/Quadcpp.cpp
index b5dc91d01e..7e83bb5bf1 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 b469816788..7b87ea52bd 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 bf694991b3..80584d3c11 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 );
-- 
GitLab