From 3b7d7e789867c120455f3a67b625a35aadd0aa86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 6 May 2020 12:10:30 +0200 Subject: [PATCH] [poincare] Clean magic numbers in Unit --- poincare/include/poincare/unit.h | 7 +++++++ poincare/src/unit.cpp | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/poincare/include/poincare/unit.h b/poincare/include/poincare/unit.h index 8c7f8c64e..84931a149 100644 --- a/poincare/include/poincare/unit.h +++ b/poincare/include/poincare/unit.h @@ -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(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); diff --git a/poincare/src/unit.cpp b/poincare/src/unit.cpp index 2aa75e81b..46302f3d3 100644 --- a/poincare/src/unit.cpp +++ b/poincare/src/unit.cpp @@ -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();