diff options
author | David Tardon <dtardon@redhat.com> | 2014-10-16 15:30:32 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-10-16 17:44:44 +0200 |
commit | 582ef22d3e8e30ffd58f092d37ffda30bd07bd9e (patch) | |
tree | 80c42b34da7e7ee05843b572f7311b3c230de9dd /tools | |
parent | ada4862afc3227b04c12960ded761db24f61257e (diff) |
fdo#84854 it seems long is not enough on 32 bit
Fraction used BigInt internally for computations, rational does nothing
like that.
Change-Id: I3e9b25074f979bc291208f7c6362c3c40eb77ff5
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qa/cppunit/test_rational.cxx | 8 | ||||
-rw-r--r-- | tools/source/generic/rational.cxx | 10 |
2 files changed, 9 insertions, 9 deletions
diff --git a/tools/qa/cppunit/test_rational.cxx b/tools/qa/cppunit/test_rational.cxx index e503c1c5d38d..c58a8001f4f7 100644 --- a/tools/qa/cppunit/test_rational.cxx +++ b/tools/qa/cppunit/test_rational.cxx @@ -33,17 +33,17 @@ public: void testReduceInaccurate() { - const boost::rational<long> aFract(1082130431,1073741824); + const boost::rational<sal_Int64> aFract(1082130431,1073741824); CPPUNIT_ASSERT_MESSAGE( "Fraction #1 not approximately equal to 1.007812499068677", rtl::math::approxEqual(boost::rational_cast<double>(aFract),1.007812499068677) ); - boost::rational<long> aFract2( aFract ); + boost::rational<sal_Int64> aFract2( aFract ); rational_ReduceInaccurate(aFract2, 8); CPPUNIT_ASSERT_MESSAGE( "Fraction #2 not 1", aFract2.numerator() == 1 && aFract2.denominator() == 1 ); - boost::rational<long> aFract3( 0x7AAAAAAA, 0x35555555 ); + boost::rational<sal_Int64> aFract3( 0x7AAAAAAA, 0x35555555 ); CPPUNIT_ASSERT_MESSAGE( "Fraction #3 cancellation wrong", aFract3.numerator() == 0x7AAAAAAA && aFract3.denominator() == 0x35555555 ); @@ -73,7 +73,7 @@ public: aFract3.denominator() == 1 ); #if SAL_TYPES_SIZEOFLONG == 8 - boost::rational<long> aFract4(0x7AAAAAAAAAAAAAAA, 0x3555555555555555); + boost::rational<sal_Int64> aFract4(0x7AAAAAAAAAAAAAAA, 0x3555555555555555); CPPUNIT_ASSERT_MESSAGE( "Fraction #4 cancellation wrong", aFract4.numerator() == 0x7AAAAAAAAAAAAAAA && aFract4.denominator() == 0x3555555555555555 ); diff --git a/tools/source/generic/rational.cxx b/tools/source/generic/rational.cxx index 73b9f4ec6a9b..1f2fc14d5a00 100644 --- a/tools/source/generic/rational.cxx +++ b/tools/source/generic/rational.cxx @@ -15,7 +15,7 @@ // If dVal > LONG_MAX or dVal < LONG_MIN, the rational throws a boost::bad_rational. // Otherwise, dVal and denominator are multiplied with 10, until one of them // is larger than (LONG_MAX / 10). -boost::rational<long> rational_FromDouble(double dVal) +boost::rational<sal_Int64> rational_FromDouble(double dVal) { long nDen = 1; long nMAX = LONG_MAX / 10; @@ -30,7 +30,7 @@ boost::rational<long> rational_FromDouble(double dVal) dVal *= 10; nDen *= 10; } - return boost::rational<long>((long) dVal, nDen); + return boost::rational<sal_Int64>((long) dVal, nDen); } // Similar to clz_table that can be googled @@ -114,7 +114,7 @@ static int impl_NumberOfBits( unsigned long nNum ) A ReduceInaccurate(8) yields 1/1. */ -void rational_ReduceInaccurate(boost::rational<long>& rRational, unsigned nSignificantBits) +void rational_ReduceInaccurate(boost::rational<sal_Int64>& rRational, unsigned nSignificantBits) { if ( !rRational ) return; @@ -147,7 +147,7 @@ void rational_ReduceInaccurate(boost::rational<long>& rRational, unsigned nSigni rRational.assign( bNeg? -long( nMul ): long( nMul ), nDiv ); } -SvStream& ReadFraction(SvStream& rIStream, boost::rational<long>& rRational) +SvStream& ReadFraction(SvStream& rIStream, boost::rational<sal_Int64>& rRational) { sal_Int32 nTmpNumerator(0), nTmpDenominator(0); rIStream.ReadInt32( nTmpNumerator ); @@ -161,7 +161,7 @@ SvStream& ReadFraction(SvStream& rIStream, boost::rational<long>& rRational) return rIStream; } -SvStream& WriteFraction(SvStream& rOStream, const boost::rational<long>& rRational) +SvStream& WriteFraction(SvStream& rOStream, const boost::rational<sal_Int64>& rRational) { //fdo#39428 SvStream no longer supports operator<<(long) rOStream.WriteInt32( sal::static_int_cast<sal_Int32>(rRational.numerator()) ); |