Commit 9c01a528 authored by Matěj Novotný's avatar Matěj Novotný
Browse files

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.
parent b715cbe6
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
@@ -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;
+9 −6
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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 );