author | Rodrigo Campos
<rodrigo@sdfg.com.ar> 2010-09-08 02:13:53 UTC |
committer | Rodrigo Campos
<rodrigo@sdfg.com.ar> 2010-09-08 02:16:50 UTC |
parent | 51ffa35a7fe0235d3a3ff0041060d647cb30020a |
aritmetica.cpp | +11 | -11 |
aritmetica.hpp | +5 | -5 |
diff --git a/aritmetica.cpp b/aritmetica.cpp index 9574083..716a612 100644 --- a/aritmetica.cpp +++ b/aritmetica.cpp @@ -63,11 +63,13 @@ double round_up(int prec, double n) * Clase nĂºmero */ -numero::numero(int prec, double real, double (*aprox_meth)(int p, double n)) +/* Por default usamos truncamiento como metodo de aproximacion */ +double (*numero::aprox_m) (int prec, double n) = trunc; + +numero::numero(int prec, double real) { this->prec = prec; - this->aprox_method = aprox_meth; - this->real = aprox_method(prec, real); + this->real = numero::aprox_m(prec, real); } int numero::get_prec() const @@ -81,27 +83,25 @@ int numero::get_prec() const numero numero::operator OP (const numero &b) const \ { \ return numero(this->prec, \ - this->aprox_method(this->prec, this->real) \ + numero::aprox_m(this->prec, this->real) \ OP \ - this->aprox_method(this->prec, b.real), \ - this->aprox_method); \ + numero::aprox_m(this->prec, b.real)); \ } \ \ numero numero::operator OP (const double &b) const \ { \ return numero(this->prec, \ - this->aprox_method(this->prec, this->real) \ + numero::aprox_m(this->prec, this->real) \ OP \ - this->aprox_method(this->prec, b), \ - this->aprox_method); \ + numero::aprox_m(this->prec, b)); \ } \ \ numero operator OP (const double &a, const numero &b) \ { \ return numero(b.get_prec(), \ - b.aprox_method(b.get_prec(), a) \ + numero::aprox_m(b.get_prec(), a) \ OP \ - b.to_double(), b.aprox_method); \ + b.to_double()); \ } DEF_OP(+) diff --git a/aritmetica.hpp b/aritmetica.hpp index 619edd5..b9a5e87 100644 --- a/aritmetica.hpp +++ b/aritmetica.hpp @@ -15,8 +15,8 @@ double round_up(int prec, double n); class numero { public: - numero(int prec = 52, double real = 0, double (*aprox_meth)(int p, - double n) = trunc); + numero(int prec = 52, double real = 0); + // Aritmeticas numero operator + (const numero &b) const; numero operator - (const numero &b) const; @@ -43,9 +43,9 @@ public: // Devolver la precision int get_prec() const; - // Metodo usado para aproximar a la precision pedida (truncamiento, - // redondeo, etc.) - double (*aprox_method) (int prec, double n); + /* Metodo usado para aproximar a la presicion pedida (por default es + * truncamiento) */ + static double (*aprox_m) (int prec, double n); private: // Precision