[poincare] Clean magic numbers in Unit

This commit is contained in:
Émilie Feral
2020-05-06 12:10:30 +02:00
parent 67b1c12bf7
commit 3b7d7e7898
2 changed files with 8 additions and 2 deletions

View File

@@ -773,7 +773,14 @@ public:
static void ChooseBestRepresentativeAndPrefixForValue(Expression * units, double * value, ExpressionNode::ReductionContext reductionContext) { return ChooseBestMultipleForValue(units, value, true, reductionContext); }
static void ChooseBestPrefixForValue(Expression * units, double * value, ExpressionNode::ReductionContext reductionContext) { return ChooseBestMultipleForValue(units, value, false, reductionContext); }
// This could be computed from the time representatives but we save time by using constexpr double
static constexpr double SecondsPerMinute = 60.0;
private:
static constexpr double MinutesPerHour = 60.0;
static constexpr double HoursPerDay = 24.0;
static constexpr double DaysPerYear = 365.25;
static constexpr double MonthPerYear = 12.0;
static constexpr double DaysPerMonth = DaysPerYear/MonthPerYear;
UnitNode * node() const { return static_cast<UnitNode *>(Expression::node()); }
static void ChooseBestMultipleForValue(Expression * units, double * value, bool tuneRepresentative, ExpressionNode::ReductionContext reductionContext);
void chooseBestMultipleForValue(double * value, const int exponent, bool tuneRepresentative, ExpressionNode::ReductionContext reductionContext);

View File

@@ -452,8 +452,7 @@ Expression Unit::BuildTimeSplit(double seconds, Context * context, Preferences::
double remain = std::round(seconds*err)/err;
constexpr static int numberOfTimeUnits = 6;
// This could be computed from the time representatives but we same time by using constexpr double
constexpr static double timeFactors[numberOfTimeUnits] = {365.25*24.0*60.0*60.0, 365.25/12.0*24.0*60.0*60.0, 24.0*60.0*60.0, 60.0*60.0, 60.0, 1.0 };
constexpr static double timeFactors[numberOfTimeUnits] = {MonthPerYear*DaysPerMonth*HoursPerDay*MinutesPerHour*SecondsPerMinute, DaysPerMonth*HoursPerDay*MinutesPerHour*SecondsPerMinute, HoursPerDay*MinutesPerHour*SecondsPerMinute, MinutesPerHour*SecondsPerMinute, SecondsPerMinute, 1.0 };
Unit units[numberOfTimeUnits] = {Unit::Year(), Unit::Month(), Unit::Day(), Unit::Hour(), Unit::Minute(), Unit::Second() };
double valuesPerUnit[numberOfTimeUnits];
Addition a = Addition::Builder();