fixed: Int::DivInt() should take parameters as 'sint' and not 'int'

this has impact on 64 bit platforms
fixed: some warnings from Visual C++ (64 bit)


git-svn-id: svn://ttmath.org/publicrep/ttmath/trunk@245 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2009-11-24 06:12:46 +00:00
parent bac79e0bfa
commit 11b9f389b9
4 changed files with 19 additions and 15 deletions

View File

@ -46,10 +46,12 @@
*/
#ifdef _MSC_VER
#pragma warning( disable: 4127 )
//warning C4127: conditional expression is constant
#pragma warning( disable: 4702 )
#pragma warning( disable: 4127 )
//warning C4702: unreachable code
#pragma warning( disable: 4702 )
//warning C4800: forcing value to bool 'true' or 'false' (performance warning)
#pragma warning( disable: 4800 )
#endif
@ -2822,10 +2824,12 @@ namespace ttmath
#ifdef _MSC_VER
#pragma warning( default: 4127 )
//warning C4127: conditional expression is constant
#pragma warning( disable: 4702 )
#pragma warning( default: 4127 )
//warning C4702: unreachable code
#pragma warning( default: 4702 )
//warning C4800: forcing value to bool 'true' or 'false' (performance warning)
#pragma warning( default: 4800 )
#endif
#endif

View File

@ -3401,17 +3401,17 @@ private:
Int<exp+1> & new_exp,
uint bits) const
{
int move; // how many times move the mantissa
sint move; // how many times move the mantissa
UInt<man+1> man_temp(mantissa); // man+1 for moving
new_exp = exponent;
new_exp.DivInt((int)bits, move);
new_exp.DivInt((sint)bits, move);
if( move != 0 )
{
// we're moving the man_temp to left-hand side
if( move < 0 )
{
move = bits + move;
move = sint(bits) + move;
new_exp.SubOne(); // when move is < than 0 then new_exp is < 0 too
}

View File

@ -482,7 +482,7 @@ public:
in other words: this(old) = ss2 * this(new)(result) + remainder
*/
uint DivInt(int ss2, int * remainder = 0)
uint DivInt(sint ss2, sint * remainder = 0)
{
bool ss1_is_sign, ss2_is_sign;
@ -512,16 +512,16 @@ public:
if( remainder )
{
if( ss1_is_sign )
*remainder = -int(rem);
*remainder = -sint(rem);
else
*remainder = int(rem);
*remainder = sint(rem);
}
return c;
}
uint DivInt(int ss2, int & remainder)
uint DivInt(sint ss2, sint & remainder)
{
return DivInt(ss2, &remainder);
}

View File

@ -356,10 +356,10 @@ namespace ttmath
default: true
e.g.
Conv c;
c.base_round = false;
Big<1, 1> a = "0.1"; // decimal input
std::cout << a.ToString(c) << std::endl; // the result is: 0.099999999
Conv c;
c.base_round = false;
Big<1, 1> a = "0.1"; // decimal input
std::cout << a.ToString(c) << std::endl; // the result is: 0.099999999
*/
bool base_round;