mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[poincare] Discard UnitConversion::Classic mode. This will be done in
Calculation app
This commit is contained in:
@@ -133,8 +133,7 @@ public:
|
||||
enum class UnitConversion {
|
||||
None = 0,
|
||||
Default,
|
||||
InternationalSystem,
|
||||
Classic // km/h, days + hours + minute
|
||||
InternationalSystem
|
||||
};
|
||||
enum class Sign {
|
||||
Negative = -1,
|
||||
|
||||
@@ -442,38 +442,10 @@ Expression Multiplication::shallowBeautify(ExpressionNode::ReductionContext redu
|
||||
if (unitConversionMode == ExpressionNode::UnitConversion::Default) {
|
||||
// Find the right unit prefix
|
||||
Unit::ChooseBestMultipleForValue(&units, &value, reductionContext);
|
||||
} else if (unitConversionMode == ExpressionNode::UnitConversion::Classic) {
|
||||
if (Unit::IsISSpeed(units)) {
|
||||
value *= Unit::MeterPerSecondToKilometerPerHourFactor;
|
||||
units = Multiplication::Builder(
|
||||
Unit::Kilometer(),
|
||||
Power::Builder(
|
||||
Unit::Hour(),
|
||||
Rational::Builder(-1)
|
||||
)
|
||||
);
|
||||
}
|
||||
if (Unit::IsISVolume(units)) {
|
||||
value *= Unit::CubicMeterToLiterFactor;
|
||||
units = Unit::Liter();
|
||||
static_cast<Unit&>(units).chooseBestMultipleForValue(value, 1, reductionContext);
|
||||
}
|
||||
if (Unit::IsISEnergy(units)) {
|
||||
value *= Unit::JouleToWatthourFactor;
|
||||
Unit w = Unit::Watt();
|
||||
units = Multiplication::Builder(
|
||||
w,
|
||||
Unit::Hour()
|
||||
);
|
||||
w.chooseBestMultipleForValue(value, 1, reductionContext);
|
||||
}
|
||||
// TODO: what to do if no classic conversion?
|
||||
}
|
||||
if (result.isUninitialized()) {
|
||||
// Build final Expression
|
||||
result = Multiplication::Builder(Number::FloatNumber(value), units);
|
||||
static_cast<Multiplication &>(result).mergeSameTypeChildrenInPlace();
|
||||
}
|
||||
// Build final Expression
|
||||
result = Multiplication::Builder(Number::FloatNumber(value), units);
|
||||
static_cast<Multiplication &>(result).mergeSameTypeChildrenInPlace();
|
||||
}
|
||||
} else {
|
||||
// Step 3: Create a Division if relevant
|
||||
|
||||
@@ -14,7 +14,6 @@ constexpr Poincare::ExpressionNode::SymbolicComputation ReplaceDefinedFunctionsW
|
||||
constexpr Poincare::ExpressionNode::SymbolicComputation ReplaceAllSymbolsWithUndefined = Poincare::ExpressionNode::SymbolicComputation::ReplaceAllSymbolsWithUndefined;
|
||||
constexpr Poincare::ExpressionNode::UnitConversion NoUnitConversion = Poincare::ExpressionNode::UnitConversion::None;
|
||||
constexpr Poincare::ExpressionNode::UnitConversion DefaultUnitConversion = Poincare::ExpressionNode::UnitConversion::Default;
|
||||
constexpr Poincare::ExpressionNode::UnitConversion ClassicUnitConversion = Poincare::ExpressionNode::UnitConversion::Classic;
|
||||
constexpr Poincare::ExpressionNode::UnitConversion InternationalSystemUnitConversion = Poincare::ExpressionNode::UnitConversion::InternationalSystem;
|
||||
constexpr Poincare::Preferences::AngleUnit Degree = Poincare::Preferences::AngleUnit::Degree;
|
||||
constexpr Poincare::Preferences::AngleUnit Radian = Poincare::Preferences::AngleUnit::Radian;
|
||||
|
||||
@@ -1284,10 +1284,6 @@ QUIZ_CASE(poincare_simplification_unit_conversion) {
|
||||
assert_parsed_expression_simplify_to("1000000_cm", "10×_km", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, DefaultUnitConversion);
|
||||
assert_parsed_expression_simplify_to("1000000_cm", "1000000×_cm", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, NoUnitConversion);
|
||||
assert_parsed_expression_simplify_to("1000000_cm", "10000×_m", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, InternationalSystemUnitConversion);
|
||||
assert_parsed_expression_simplify_to("10_m/_h", "0.01×_km×_h^\x12-1\x13", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
|
||||
assert_parsed_expression_simplify_to("0.2_m^3", "200×_L", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
|
||||
assert_parsed_expression_simplify_to("0.000012_m^3", "1.2×_cL", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
|
||||
assert_parsed_expression_simplify_to("3600_J", "1×_W×_h", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
|
||||
}
|
||||
|
||||
QUIZ_CASE(poincare_simplification_user_function) {
|
||||
|
||||
Reference in New Issue
Block a user