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