From eeb110c74140d65eb0490a4c60c82aabb1a9485a Mon Sep 17 00:00:00 2001 From: Daniel Simon <simonda4@fjfi.cvut.cz> Date: Mon, 5 Mar 2018 10:12:45 +0100 Subject: [PATCH] Bugs in MultiPrecision repaired. --- src/TNL/Experimental/Arithmetics/MultiPrecision.cpp | 13 +++++++++---- src/TNL/Experimental/Arithmetics/MultiPrecision.h | 5 +++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/TNL/Experimental/Arithmetics/MultiPrecision.cpp b/src/TNL/Experimental/Arithmetics/MultiPrecision.cpp index 048df5d749..69d269ee2c 100644 --- a/src/TNL/Experimental/Arithmetics/MultiPrecision.cpp +++ b/src/TNL/Experimental/Arithmetics/MultiPrecision.cpp @@ -15,15 +15,16 @@ namespace Arithmetics { /* CONSTRUCTORS */ MultiPrecision::MultiPrecision(){ - mpf_init(number); + mpf_init (number); } -MultiPrecision::MultiPrecision(int precision) { - mpf_set_default_prec(precision); +MultiPrecision::MultiPrecision(int i){ + signed long int sli = i; + mpf_init_set_si (number, sli); } MultiPrecision::MultiPrecision(double d){ - mpf_init_set_d(number, d); + mpf_init_set_d (number, d); } /* OPERATORS IMPLEMENTATION */ @@ -138,6 +139,10 @@ bool MultiPrecision::operator==(const mpf_t &GMPnumber) const{ /* METHODS */ +MultiPrecision MultiPrecision::setPrecision(int precision){ + mpf_set_default_prec (precision); +} + void MultiPrecision::printMP(){ int precision = mpf_get_default_prec(); mpf_out_str(stdout, 10, precision, this->number); std::cout <<std::endl; diff --git a/src/TNL/Experimental/Arithmetics/MultiPrecision.h b/src/TNL/Experimental/Arithmetics/MultiPrecision.h index 8852a6a1b3..75af9712c8 100644 --- a/src/TNL/Experimental/Arithmetics/MultiPrecision.h +++ b/src/TNL/Experimental/Arithmetics/MultiPrecision.h @@ -22,8 +22,8 @@ public: /* CONSTRUCTORS */ MultiPrecision(); // initialize number to 0 - explicit MultiPrecision(int precision); // sets the default precision - explicit MultiPrecision(double d); // initialize number + explicit MultiPrecision(int); // assignment of signed long integer + explicit MultiPrecision(double d); // assignment of double /// TODO Constructor for Quad /* OPERATORS */ @@ -54,6 +54,7 @@ public: /* METHODS */ void printMP(); + static MultiPrecision setPrecision(int); // sets the default precision /// TODO void printNumber(int digits, ostream& str = std::cout ); /* DESTRUCTOR */ -- GitLab