currently what we have

This commit is contained in:
VoR0220 2016-03-28 13:36:48 -05:00
parent 93295ae8f8
commit 4d283b2b30
2 changed files with 9 additions and 5 deletions

View File

@ -817,7 +817,7 @@ shared_ptr<FixedPointType const> ConstantNumberType::fixedPointType() const
bool negative = (m_value < 0); bool negative = (m_value < 0);
//todo: change name //todo: change name
bigint fractionalBits = fractionalBitsNeeded(); bigint fractionalBits = fractionalBitsNeeded();
cout << "Total int: " << fractionalBits.str() << endl;
if (negative && !fractionalSignBit) // convert to positive number of same bit requirements if (negative && !fractionalSignBit) // convert to positive number of same bit requirements
{ {
integers = ((0 - integers) - 1) << 1; integers = ((0 - integers) - 1) << 1;
@ -830,10 +830,14 @@ shared_ptr<FixedPointType const> ConstantNumberType::fixedPointType() const
return shared_ptr<FixedPointType const>(); return shared_ptr<FixedPointType const>();
else else
{ {
unsigned totalBytesRequired = bytesRequired(fractionalBits) * 8; cout << "m_value: " << m_value << endl;
cout << "Total int: " << fractionalBits.str() << endl;
unsigned fractionalBytesRequired = bytesRequired(fractionalBits) * 8;
unsigned integerBytesRequired = bytesRequired(integers) * 8; unsigned integerBytesRequired = bytesRequired(integers) * 8;
cout << "Fractional Bytes Required: " << fractionalBytesRequired << endl;
cout << "Integer Bytes Required: " << integerBytesRequired << endl << endl;
return make_shared<FixedPointType>( return make_shared<FixedPointType>(
integerBytesRequired, totalBytesRequired - integerBytesRequired, integerBytesRequired, fractionalBytesRequired,
negative ? FixedPointType::Modifier::Signed : FixedPointType::Modifier::Unsigned negative ? FixedPointType::Modifier::Signed : FixedPointType::Modifier::Unsigned
); );
} }
@ -842,7 +846,7 @@ shared_ptr<FixedPointType const> ConstantNumberType::fixedPointType() const
//todo: change name of function //todo: change name of function
bigint ConstantNumberType::fractionalBitsNeeded() const bigint ConstantNumberType::fractionalBitsNeeded() const
{ {
auto value = m_value; auto value = m_value - wholeNumbers();
for (unsigned fractionalBits = 0; value < boost::multiprecision::pow(bigint(2), 256); fractionalBits += 8, value *= 10) for (unsigned fractionalBits = 0; value < boost::multiprecision::pow(bigint(2), 256); fractionalBits += 8, value *= 10)
{ {
if (value.denominator() == 1) if (value.denominator() == 1)

View File

@ -3434,7 +3434,7 @@ BOOST_AUTO_TEST_CASE(inline_array_fixed_rationals)
char const* text = R"( char const* text = R"(
contract test { contract test {
function f() { function f() {
ufixed8x16[3] memory a = [3.5, 4.1234, 2.5]; ufixed8x16[4] memory a = [3.5, 4.1234, 2.5, 4.0];
} }
} }
)"; )";