mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
currently what we have
This commit is contained in:
parent
93295ae8f8
commit
4d283b2b30
@ -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)
|
||||||
|
@ -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];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
Loading…
Reference in New Issue
Block a user