added: '#ifndef __GNUC__' to Big::Pow() where is using '#pragma warning'

in order to not confuse GCC


git-svn-id: svn://ttmath.org/publicrep/ttmath/trunk@109 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2009-03-25 02:01:42 +00:00
parent bfdc6d3df3
commit 85d1b87ac0
2 changed files with 10 additions and 3 deletions

View File

@ -1,4 +1,4 @@
Version 0.8.3 prerelease (2009.03.24):
Version 0.8.3 prerelease:
* fixed: RclMoveAllWords() and RcrMoveAllWords() sometimes didn't return
the proper carry, (when 'bits' was greater than or equal to 'value_size')
this had impact on Rcl() and Rcr(), they also returned the wrong carry
@ -18,6 +18,10 @@ Version 0.8.3 prerelease (2009.03.24):
Big<2,3> a = 100;
Big<3,5> b;
b = a; // b had a wrong value
* fixed: Big::Pow(const Big<exp, man> & pow)
it's using PowInt() only when pow.exponent is in range (-man*TTMATH_BITS_PER_UINT; 0]
previously the powering 'hung' on an input like this: "(1+ 1e-10000) ^ 10e100000000"
(there was 10e100000000 iterations in PowInt())
* changed: UInt::FromString, added a parametr 'after_source'
which is pointing at the end of the parsing string
* changed: renamed: Big::PowUInt(UInt<pow_size> pow) -> Big::Pow(UInt<pow_size> pow)

View File

@ -1642,7 +1642,9 @@ public:
// MS Visual Express 2005 reports a warning (in the lines with 'uint man_diff = ...'):
// warning C4307: '*' : integral constant overflow
// but we're using 'if( man > another_man )' and 'if( man < another_man )' and there'll be no such a situation here
#ifndef __GNUC__
#pragma warning( disable: 4307 )
#endif
if( man > another_man )
{
@ -1655,9 +1657,10 @@ public:
uint man_diff = (another_man - man) * TTMATH_BITS_PER_UINT;
c += exponent.AddInt(man_diff, 0);
}
#ifndef __GNUC__
#pragma warning( default: 4307 )
#endif
// mantissa doesn't have to be standardized (either the highest bit is set or all bits are equal zero)
CorrectZero();