[GiNaC-list] assignment
Alexei Sheplyakov
alexei.sheplyakov at gmail.com
Wed Mar 30 07:45:05 CEST 2011
Hello,
On Tue, Mar 29, 2011 at 12:23:46PM +0200, Nisoli Isaia wrote:
> even with your suggested correction, it gives exactly the same error.
> I think the problem lies in some way in my assignment operator, when I use
> the overloaded operator= of numeric.
I don't think there's anything wrong about the assignment operator.
As a matter of fact the following program works for me just fine:
#include <ginac/ginac.h>
#include <iostream>
using namespace std;
using namespace GiNaC;
class rinterval
{
public:
numeric min;
numeric max;
numeric error;
rinterval(const numeric&, const numeric&, const numeric&);
//Friend
friend const rinterval dynamic(const rinterval&);
friend std::ostream &operator<< (std::ostream& os, const rinterval& inter)
{
return os << "[" << inter.min << "," << inter.max <<"], error = " << inter.error << endl;
}
rinterval& operator=(const rinterval& rhs);
};
rinterval::rinterval(const numeric& input1, const numeric& input2, const numeric& miserr)
{
if (input1 > input2) {
min = input2;
max = input1;
} else {
min = input1;
max = input2;
}
error = miserr;
}
const rinterval dynamic(const rinterval& domain)
{
numeric a = "1.47777777777777777777777777779999";
rinterval temp(a*domain.min, a*domain.max, domain.error);
cout << temp;
return temp;
}
rinterval& rinterval::operator=(const rinterval &rhs)
{
if (this == &rhs)
return *this;
this->min = rhs.min;
this->max = rhs.max;
error = rhs.error;
return *this;
}
int main (void)
{
numeric a(1, 10);
numeric b(2, 10);
rinterval inter(a, b, numeric(0.00001));
inter = dynamic(inter);
cout << inter << endl;
}
The output is
[0.14777777777777777779,0.29555555555555555557], error = 1.0000000000000000818E-5
[0.14777777777777777779,0.29555555555555555557], error = 1.0000000000000000818E-5
I use latest GiNaC and CLN from git.
Compiler:
g++ --version
g++ (Debian 4.4.5-8) 4.4.5
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
OS:
uname -rms
Linux 2.6.38.2-ck1 x86_64
Best regards,
Alexei
More information about the GiNaC-list
mailing list