mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-22 07:10:40 +01:00
[poincare] Clean Rational and Decimal size() methods
This commit is contained in:
@@ -47,8 +47,12 @@ void DecimalNode::initToMatchSize(size_t goalSize) {
|
||||
assert(size() == goalSize);
|
||||
}
|
||||
|
||||
static size_t DecimalSize(uint8_t numberOfDigitsInMantissa) {
|
||||
return sizeof(DecimalNode)+ sizeof(native_uint_t)*numberOfDigitsInMantissa;
|
||||
}
|
||||
|
||||
size_t DecimalNode::size() const {
|
||||
return sizeof(DecimalNode)+ sizeof(native_uint_t)*m_numberOfDigitsInMantissa;
|
||||
return DecimalSize(m_numberOfDigitsInMantissa);
|
||||
}
|
||||
|
||||
Expression DecimalNode::setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) {
|
||||
@@ -320,7 +324,7 @@ Decimal::Decimal(T f) : Number() {
|
||||
/* We do not get rid of the useless 0s ending the mantissa here because we want
|
||||
* to keep them if they were entered by the user. */
|
||||
Decimal::Decimal(Integer m, int e) :
|
||||
Decimal(sizeof(DecimalNode)+m.numberOfDigits()*sizeof(native_uint_t), m, e) {}
|
||||
Decimal(DecimalSize(m.numberOfDigits()), m, e) {}
|
||||
|
||||
|
||||
Decimal::Decimal(size_t size, const Integer & m, int e) : Number(TreePool::sharedPool()->createTreeNode<DecimalNode>(size)) {
|
||||
|
||||
@@ -55,7 +55,7 @@ Integer RationalNode::denominator() const {
|
||||
|
||||
// Tree Node
|
||||
|
||||
static inline size_t RationalSize(uint8_t numeratorNumberOfDigits, uint8_t denominatorNumberOfDigits) {
|
||||
static size_t RationalSize(uint8_t numeratorNumberOfDigits, uint8_t denominatorNumberOfDigits) {
|
||||
uint8_t realNumeratorSize = numeratorNumberOfDigits > Integer::k_maxNumberOfDigits ? 0 : numeratorNumberOfDigits;
|
||||
uint8_t realDenominatorSize = denominatorNumberOfDigits > Integer::k_maxNumberOfDigits ? 0 : denominatorNumberOfDigits;
|
||||
return sizeof(RationalNode) + sizeof(native_uint_t)*(realNumeratorSize + realDenominatorSize);
|
||||
|
||||
Reference in New Issue
Block a user