diff --git a/include/polynomial.hpp b/include/polynomial.hpp index 88d1299..fa0ca90 100644 --- a/include/polynomial.hpp +++ b/include/polynomial.hpp @@ -73,7 +73,7 @@ template std::ostream & operator<< (std::ostream &output, const Polynomial &op) { int allZero = 1; for (int i=0; i<=op.degree; ++i) - for (int j=0; j<=i; ++j){ + for (int j=0; j<=i; ++j) { if (op.coef[i*(i+1)/2 + j] == 0.0) continue; allZero = 0; if (op.coef[i*(i+1)/2 + j] == -1.0) @@ -85,26 +85,28 @@ std::ostream & operator<< (std::ostream &output, const Polynomial &op) { if (i == 0) if (op.coef[0] == T(1)) output << "1"; - if (i != 0) - if (i-j == 0) + if (i != 0) { + if (i-j == 0) { if (j == 1) output << "y"; else output << "y^" << j; - else if (i-j == 1) + } else if (i-j == 1) { if (j == 0) output << "x"; else if (j == 1) output << "x*y"; else output << "x*y^" << j; - else + } else { if (j == 0) output << "x^" << i; else if (j == 1) output << "x^" << (i-j) << "*y"; else output << "x^" << (i-j) << "*y^" << j; + } + } } if (allZero) output << "0"; return output; diff --git a/include/sirocco.h b/include/sirocco.h index 53f74bd..c63b6e6 100644 --- a/include/sirocco.h +++ b/include/sirocco.h @@ -5,7 +5,9 @@ #include // ACTIVATE ROUND MODE CONTROL -#pragma STDC FENV_ACCESS on +#ifndef __clang__ +#pragma STDC FENV_ACCESS ON +#endif double * homotopyPath (int degree, double *_coef, double _y0R, double _y0I); diff --git a/include/sirocco.hpp b/include/sirocco.hpp index 536a054..52d1c1d 100644 --- a/include/sirocco.hpp +++ b/include/sirocco.hpp @@ -8,7 +8,9 @@ // ACTIVATE ROUND MODE CONTROL -#pragma STDC FENV_ACCESS on +#ifndef __clang__ +#pragma STDC FENV_ACCESS ON +#endif typedef std::complex Complex; diff --git a/lib/icomplex.cpp b/lib/icomplex.cpp index 9ca65ef..f93fac0 100644 --- a/lib/icomplex.cpp +++ b/lib/icomplex.cpp @@ -5,7 +5,9 @@ #define MIN(a,b) (((a) < (b))? (a) : (b)) #define MAX(a,b) (((a) > (b))? (a) : (b)) -#pragma STDC FENV_ACCESS on +#ifndef __clang__ +#pragma STDC FENV_ACCESS ON +#endif // CONSTRUCTORS @@ -386,4 +388,4 @@ double f (double x, double c) { } double g (double x, double c) { return -c / (x*x + c*c); -} \ No newline at end of file +} diff --git a/lib/interval.cpp b/lib/interval.cpp index 2aba233..cc0e138 100644 --- a/lib/interval.cpp +++ b/lib/interval.cpp @@ -5,7 +5,9 @@ // ACTIVATE ROUND MODE CONTROL -#pragma STDC FENV_ACCESS on +#ifndef __clang__ +#pragma STDC FENV_ACCESS ON +#endif // MACROS FOR MIN AND MAX #define MIN(a,b) (((a) < (b))? (a) : (b)) @@ -365,4 +367,4 @@ Interval operator/ (double op1, const Interval &op2) { // RESTORE OLD ROUNDING MODE fesetround (oldRound); return rop; -} \ No newline at end of file +} diff --git a/lib/mp_interval.cpp b/lib/mp_interval.cpp index 22f5062..0e8fe42 100644 --- a/lib/mp_interval.cpp +++ b/lib/mp_interval.cpp @@ -80,21 +80,25 @@ MPInterval & MPInterval::operator= (const MPInterval &op) { // UPDATE VALUES mpfr_set (this->a, op.a, MPFR_RNDD); mpfr_set (this->b, op.b, MPFR_RNDU); + return *this; } MPInterval & MPInterval::operator= (const Interval &op) { // UPDATE VALUES mpfr_set_d (this->a, op.a, MPFR_RNDD); mpfr_set_d (this->b, op.b, MPFR_RNDU); + return *this; } MPInterval & MPInterval::operator= (const mpfr_t op) { // UPDATE VALUES mpfr_set (this->a, op, MPFR_RNDD); mpfr_set (this->b, op, MPFR_RNDU); + return *this; } MPInterval & MPInterval::operator= (double op) { // UPDATE VALUES mpfr_set_d (this->a, op, MPFR_RNDD); mpfr_set_d (this->b, op, MPFR_RNDU); + return *this; } diff --git a/lib/sirocco.cpp b/lib/sirocco.cpp index 1657a1d..8216638 100644 --- a/lib/sirocco.cpp +++ b/lib/sirocco.cpp @@ -17,7 +17,9 @@ using namespace std; // z2 = t(1+0.01i) ******************************************/ +#ifndef __clang__ #pragma STDC FENV_ACCESS ON +#endif // PERFORM A MINIMUM OF 5 ITERATIONS OF NEWTON METHOD TO CORRECT THE APPROXIMATION OF THE ROOT (SUPPOSED TO BE GOOD ENOUGH) template <>