Commit Graph

1783 Commits

Author SHA1 Message Date
Hugo Saint-Vignes
10de970814 [poincare] Remove unnecessary unit norm code
Change-Id: I7d7abf88d1dcc10fb4ae0f6b3570ebfe4b4af311
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
a5a57c4076 [poincare] Improve prefixes for mass and inductance unities
Change-Id: Ic9eb7b5adff7b172452b4c73bd7ddc5c59761219
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
11e41bb4dc [poincare] Add comments and alternative algorithm to beautify units
Change-Id: I4b1ce9528d9d6796fe08f8566ee5d1efafa1d87d
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
51f1cdb076 [poincare] Handle rational unit exponents
Change-Id: Id710702dbed19d34992da90978d5823d68abb80a
2020-11-04 14:45:35 +01:00
Arthur Camouseigt
09e39ad890 [Stat+Reg] Allowing lists of values to be sorted
Change-Id: I181bb55443bf87356d127eb6c56ff6140806fdea
2020-11-04 14:45:35 +01:00
Arthur
6380bf7885 [poincare/integral_layout] Changing the integral layout and behavior
Should there be multiple integrals in a row,
they now all have the same height.

Change-Id: I106c4e2cb2671f6518f1d916f414f6e9349f83dc
2020-11-04 14:45:35 +01:00
Arthur
bd74ab9718 [poincare/sequence_layout] Modified the height of sigma and product signs
Because of their previous even height, those symbols were not aligned with fractions. Now that they have an uneven size, they line up correctly.
2020-11-04 14:45:35 +01:00
Arthur Camouseigt
1e0449791d [poincare/integral_layout] Changing the integral symbol
Changed the look of the integral symbol and the positions of the upper
and lower bounds. Added a drawing of the window to explain the meaning
of various margins.

Change-Id: I3ffc07848dc9ad68dce3c0e01853d548e31dd152
2020-11-04 14:45:35 +01:00
Arthur Camouseigt
653b7d0ac4 [poincare] Bigger product and sum signs
Replacing the product and sum signs with bigger and antialiased ones.
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
4ca4d4f45e [poincare/layout] Factored Parenthesis collapsing
Parenthesis collapsing is no longer handled by LeftParenthesisLayout and
RightParenthesisLayout, but by ParenthesisLayout itself.

Change-Id: I6797cd40ee02881544e01e9b88f31a597c51d179
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
e2e062e128 [poincare/layout] Changed Fraction collapsing
Fraction are now only collapsed if they are the first thing to be
collapsed or if a parenthesis is open.

Change-Id: Ie7f3a99498b9981dff70221efd7de6bee6d0c379
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
9527894b25 [poincare] Function LayoutFromAddress
Created function Layout::LayoutFromAddress, which creates in the pool a layout
that has been stored in a buffer. Functionally identical to
Expression::ExpressionFromAddress.

Change-Id: I204e6b7d42f259ef2732563aa2a168a644060867
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
3db1cad18b [poincare] Move IsApproximatelyEqual to a better helper
Change-Id: I056a96b3721005e01c6ef3f166a80a08195ff338
2020-11-04 14:45:34 +01:00
Hugo Saint-Vignes
70cd166da5 [escher] Scroll speed increase for long repetition in layout fields
Change-Id: I9460cb44631f0b225598804334da5a0e74029915
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
a9c94236c2 [poincare] Implemented further derivation methods and updated tests.
Derivation now works on tangents and the three hyperbolic functions.

Change-Id: I62049e79c661c3c4a031be0a93c403fb936d611b
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
eab8167a56 [poicare/logarithm] Implemented didDerivate and unaryFunctionDifferential for Logarithm
Derivation now computes as expected on logarithms, as long as their base is not a function of the derivation variable.

Change-Id: Ia56da1c1151c0ddf3887be84ddb4bd02664c5188
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
407d4bce6e [poincare/cosine] Implemented didDerivate and unaryFunctionDifferential for Cosine
Derivation now propagates as expected on cosines.

Change-Id: I6f5af48ac7462c5b8e77ff1a6428a65bf6c0c7de
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
5cf85368ea [poincare] Added framework to derivate unary functions, and implemented it for Sine
Added a method unaryFunctionDifferential to ExpressionNode and Expression, to be implemented by subclasses representing unary functions.
Added a function derivateUnaryFunction to Derivative, to factor (f°g)' -> g' * f'°g.

Change-Id: Id1780f1082ccd001f1282fe4ddfff2b7055d3a27
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
648cdbaa29 [poincare] Implemented didDerivate method for Power
Derivation now propagates to powers as expected, whether the base, the exponent, or both are functions of the variable. This also makes division derive as intended.

Change-Id: I51cbd5f7ec9f6aaa1df068625bbda1437941fa08
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
6f378ef3ef [poincare] Implemented didDerivate for Multiplication
Derivation propagates as expected on multiplications (but not power). Some tests involving diff had to be updated to reflect that behaviour.

Change-Id: Ifa32031bc37a156c18d296757bcdd6ccdb0ea43e
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
c65687e9f6 [poincare] Implemented didDerivate methods for Number, Symbol and Addition
Number's subclasses, with the exception of Undefined and Unreal, derive as zero. Symbols derive as expected. Derivation propagates as expected on additions.

Change-Id: Icedbb1dfac8099347a19c14bf2537011b2e8b199
2020-11-04 14:45:34 +01:00
Gabriel Ozouf
051e608835 [poincare] Added method didDerivate to Expression and ExpressionNode
This method is to be implemented by derivable expression subclasses, for use in Derivative::shallowReduce. It performs the calculation for the derivative, and returns whether calculations happened.

Change-Id: I13cdb131e2044578392f5178a9f389314c1c4c8a
2020-11-04 14:45:34 +01:00
Hugo Saint-Vignes
29b0e86225 [quiz] Improve test possibilities for regression and statistics
Change-Id: I4414fad24e10dcbd56cd9aff1e35e00ba66dda2c
2020-11-04 14:45:34 +01:00
Charlotte THOMAS
9d8b62894f Fix: Changed "IS" to "SI" because even in english the short for "International System of Units" is "SI" 2020-07-15 10:28:15 +02:00
Léa Saviot
cf4eaa3d1f [apps/poincare] Use symbolicComputation in recursivelyMatches
This fixes a failed assertion for the scenario:
[3]->x then, in the Equation app, solve x+1->0
2020-06-15 16:20:09 +02:00
Émilie Feral
dfef134603 [poincare] typo 2020-06-11 12:03:21 +02:00
Léa Saviot
6e6236a651 [poincare/integer] Integer::isExtractable
This factorizes and fixes wrong isExtractable checks
2020-06-10 11:57:41 +02:00
Émilie Feral
9556ae3aa4 [poincare] Unit: comparison can rely on the pointer addresses only when
the object are ordered in a table. Otherwise, the compiler is free to
order them as it wants.

This fixes the test on the device: 10_m^2→_mm×_km simplifies to 10×_km×_mm
2020-06-04 14:58:20 +02:00
Émilie Feral
8ceb368047 [poincare] Adding a number before orphan unit is done at beautification
instead of at reducing (revert previous commit)

This fixes the following bug: input log(0*f(_t)) --> crash due to an
infinite loop where we remove/add 1 before the multiplication
2020-06-04 14:50:10 +02:00
Émilie Feral
ade90db392 [poincare] UnitConvert: implement removeUnit since UnitConvert can be a
reduced expression
2020-06-04 14:50:09 +02:00
Émilie Feral
9a3e2c960f [escher] LayoutField: update the grey squares when using insertion
cursor
2020-06-04 14:50:08 +02:00
Léa Saviot
3e4478454c [escher] Avoid useless redrawing in ExpressionView::setLayout 2020-06-04 14:50:08 +02:00
Émilie Feral
7b2d020128 [poincare] Unit: implement IsIS 2020-06-04 14:50:07 +02:00
Émilie Feral
0f4eee2d71 [poincare] Add comment on how Units are built 2020-06-04 14:50:07 +02:00
Émilie Feral
a48f65ba95 [poincare] Unit: ensure one unique instance of each prefix 2020-06-04 14:50:07 +02:00
Émilie Feral
bcbdc9312e [poincare] Fix Unit::isSecond, Unit::isMeter and Unit::isKilogram: the
EmptyPrefix is not unique, we can't only compare pointers
2020-06-04 14:50:07 +02:00
Émilie Feral
3b7d7e7898 [poincare] Clean magic numbers in Unit 2020-06-04 14:50:07 +02:00
Émilie Feral
67b1c12bf7 [poincare] Remove useless variables 2020-06-04 14:50:07 +02:00
Émilie Feral
5fa50ec79d [poincare] Unit::BuildTimeSplit can split negative time 2020-06-04 14:50:03 +02:00
Émilie Feral
73a598e023 [poincare] Unit: enable to tune both the prefix and the Representant or
just the prefix on a given Unit
2020-06-04 14:50:03 +02:00
Émilie Feral
ec95ed0789 [poincare] Add Unit::ElectronVolt builder 2020-06-04 14:50:03 +02:00
Émilie Feral
53db27ffeb [poincare] Discard UnitConversion::Classic mode. This will be done in
Calculation app
2020-06-04 14:50:03 +02:00
Émilie Feral
7b28f760b7 [poincare] Float: float can be layouted 2020-06-04 14:50:03 +02:00
Émilie Feral
845a118073 [poincare] Add Unit::BuildTimeSplit and helpers for time units 2020-06-04 14:50:02 +02:00
Émilie Feral
94c5941fb5 [poincare] Unit: improve ChooseBestMultipleForValue 2020-06-04 14:50:02 +02:00
Émilie Feral
4d7b9aa2a9 [poincare] Add watthour representation to classic unit conversion 2020-06-04 14:50:02 +02:00
Émilie Feral
cc114900fa [poincare] Add Liter representation to classic unit conversion 2020-06-04 14:50:02 +02:00
Émilie Feral
e2dc79c2d5 [poincare] Partially implement simplification for UnitConversion::Classic 2020-06-04 14:50:02 +02:00
Émilie Feral
ae71c23147 [poincare] Override method Unit::node to return UnitNode 2020-06-04 14:50:01 +02:00
Émilie Feral
3308b13b9c [poincare] UnitConvert:
- do the smart part at beautification to avoid
requiring an escape case just for UnitConvert
- Use UnitConvert::None
2020-06-04 14:50:01 +02:00