Commit Graph

11679 Commits

Author SHA1 Message Date
Hugo Saint-Vignes
cce1fa0c90 [poincare/test] Add tests for LCM and GCD
Change-Id: If91c1ef863c9810e1ab87525a5ed2b4c7ed45656
2020-11-04 15:11:43 +01:00
Hugo Saint-Vignes
cafb1c1c05 [poincare] LCM and GCD accept set of numbers
Change-Id: I367ff5e48fa2856e976aa020ac0d172216f3a421
2020-11-04 15:11:43 +01:00
Hugo Saint-Vignes
0322a1a6a7 [apps/shared] Fix draw curve issues when tStep << tStart
Change-Id: Iaf054cff1f78f3c800564a0e6c133192bdfab260
2020-11-04 15:11:43 +01:00
Arthur Camouseigt
22a15f5ed6 [Shared/store_parameter_controler] Fixed a bug
In stats when selecting an action on a column, all actions listed after
the one selected were applied. Adding breaks to the switch solved the
issue

Change-Id: I4a2f8a41f734a209abb17e76388eed551bf1769c
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
9e12b61849 [apps/graph] Round x before evaluating graph cursor on scroll
Change-Id: I13500669963eb8130e188a898bed0bf63655add6
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
bd2609bcba [apps/graph] Remove horizontal margins when panning on some graph calculations
Change-Id: I1a28555c5b4f04986b223617ab15110711a74841
2020-11-04 15:07:20 +01:00
Gabriel Ozouf
c04a7af22f [escher/layout_field] Change cursor behavior
Some code to prevent the input field from scrolling when switching to
the history in layout mode causes problems :
  - With a calculation in the history, type an empty matrix or fraction.
    Then with the cursor on an empty square, go to the history. The
    square will appear shifted to the right.

Change-Id: I72ebee675215dc3c3a3f8432890f6fee820ef5c9
2020-11-04 15:07:20 +01:00
Gabriel Ozouf
9e3470436a [apps/calculation] Move input memoization
Calculation's input is now only saved and restored when the app truly
closes or opens, instead of whenever the EditExpressionController enters
or leaves the responder chain (which also happens when the user switches
to the history or the toolbox, or triggers a syntax error).

Change-Id: I8404f1bc5619bcbc03272b406962d284fe25f7e2
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
d027d99597 [apps/calculation] Reset highlighted cells in additional results
Change-Id: I517e7d3dd025413f405fed605631dad830540e76
2020-11-04 15:07:20 +01:00
Gabriel Ozouf
44da25dd64 [poincare/number] Fixed typo
Change-Id: Id691ade099f09c8479582751aaab6dbd7f077711
2020-11-04 15:07:20 +01:00
Gabriel Ozouf
891366c51d [poincare/expression_node] Added Double type
Float<float> and Float<double> used to share the same expression type
(Float), and the distinction was made by comparing their size. However,
due to padding, their size could be the same, leading to some issues :
  - On the simulator, in Calculation, type 1_mm^3 and go to the
    additional outputs. One of the results would be -0.0003081979_µm^3.

Change-Id: Ic8f9328bf462104776fbab636c34d0d152cd7e58
2020-11-04 15:07:20 +01:00
Arthur Camouseigt
1e82d5012b [Stats] Moved sort messages to shared+NL translation
This allows compilation without stats app

Change-Id: I0f564ee46756420f0cff5da91ed77677b22cdee0
2020-11-04 15:07:20 +01:00
Arthur Camouseigt
f9a1f1a1b7 [Poincare/test/approximation.cpp] Fixed broken test
Change-Id: I6d851abf9626d282133f143afa2a16ca2d8bec7e
2020-11-04 15:07:20 +01:00
Arthur Camouseigt
b7bfc253eb [poincare/trigonometry] Modified shallowReduceInverseFunction
This fixes issues #1541. Formulas as asin(sin(X)) with X a large number
were failling to simplify themselves into the image interval of asin
ex : previous version asin(sin(6)) = 6
     new version asin(sin(6)) = -2pi+6

Change-Id: Ia6200b67914224cecd2cd943bcf9bc2ff6e0447a
2020-11-04 15:07:20 +01:00
Arthur Camouseigt
5569ba92a2 [poincare/approximation_helper] Changed the way to approximate
To prevent incorrect approximations, such as cos(1.5707963267949) = 0, we lowered the precision value. This way,
  the approximation is more selective. However, when ploting functions such as e^(i.pi+x), the float approximation fails
  and therefore, the function appears "undef".
  As a result we created two functions Epsilon that behave differently according to the number's type. When it is a double,
  we want a maximal precision -> epsilon_double = 1x10^(-15), and when it is a float, we accept more agressive approximations
 -> epsilon_float = 10 x 1x10^(-7).

Change-Id: I844ac52ade665f51fe6888db38f4485c193286d9
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
1f9d0b5810 [apps/code] Reorder rows due to color name change
Change-Id: I1c8f3e9d015cf55ec8fc38082f60e957b19b196d
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
641186d89c [python] Accept "grey" color
Change-Id: Ia9b70eb3b4205ae9571eb4269410c30cfbdd1214
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
e27c668c40 [apps,escher,kandinsky,poincare,python] Replace every "grey" with "gray"
Change-Id: I60a232849dce90f70e6977b6024d6e9b1ce1b731
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
4331686818 [apps/toolbox] Update toolbox and additional result text for matrices
Change-Id: I59e1561dcb97c75e57f0c24cfe1953ff594daf92
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
c4018d0648 [poincare] Update rowCanonize pivot selection for more consistent ref results
Change-Id: Id7e856f57ccd3d990077b0f6753089bc6edcc03b
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
3bfc0c83d8 [poincare] Factorize Echelon Form classes
Change-Id: I7ec7290a4d94b9bd1224ad4c53be8b4662bd32d5
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
f00c135b69 [apps/calculation] Add additional outputs for matrix
Change-Id: Ia4b285eb0f28eaed838d32a1fdfb785d13664f65
2020-11-04 15:07:20 +01:00
Hugo Saint-Vignes
007c38652f [poincare] Add ref and rref matrix functions
Change-Id: Id0e57a4f85d551ca5320c4b6e3c0baadae70946d
2020-11-04 15:07:20 +01:00
Arthur Camouseigt
997c103fba [Toolbox] Changed the required parameters for normal_distributions
Changed the parameter σ2 to σ. This is now consistant with the
probability app

Change-Id: I96101ba158cebef972e536cfa5cc1b2da71b543d
2020-11-04 15:07:19 +01:00
Arthur Camouseigt
6072ffd848 [poincare/normal_distribution.cpp] Fixed approximation error
Removed limitation in calculation of normal_distribution. It was used to
speed-up computation but yielded 0 for small values.
Previously P(X<5) with X->N(7,0.3162) gave 0 as a result
now it gives 1.26e-10

Change-Id: I3f1c997dfe2ba6424b372a0a82af6d9871443657
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
de681705e6 [escher/expression_field] Renamed dumpLayout
Changed dumpLayout's name to moveCursorAndDumpContent, as the name
suggested the method was only usable on layouts (while it also works on
text). The method is also no longer marked const, and the previous name
could imply that it had no side effects.
Likewise, renamed restoreLayout to restoreContent.

Change-Id: I46b320e74c07b48e256dc2146f9ecc15af38a8e6
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
67af3a5b4e [apps/calculation] Fixed grey and yellow squares
When closing and reopening Calculation, if the cursor was on an
EmptyLayout, this layout would be invisible, instead of being denoted by
its usual yellow square.
This also fixes a bug that would leave the grey squares in matrices when
leaving and reopening the app, causing a failed assertion on the simulator.

Change-Id: Ib723797c079f1441f5cde174aa5c492ad4226335
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
e49dc08759 [escher/expression_field] Fixed dumpLayout
Closing the Calculation app because of a full pool would crash the
device, by attempting to dump a layout with no node.

Change-Id: Ic926da61ae93f47eb576848788e1de5e3f94f5bb
2020-11-04 15:07:19 +01:00
Hugo Saint-Vignes
433639c471 [ion] Implement dynamic scroll speed profile
Change-Id: Ib3ec2ef63d19bfb88b627f06bcc185fa1b232223
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
2bfdc482a6 [apps/continuous_function] Cut clearCache method
Inlined call to ContinuousFunction::clearCache and removed the method,
as its name was confusing.

Change-Id: I54454fb0b06167e01249afaa5b23932451125f2e
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
1de6ac702d [apps/continuous_function_cache] abs -> fabs
Replaced abs calls on float with fabs.

Change-Id: I26eda164416ca8b2d601431a59171fd7b00ed33f
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
15988f0fae [liba/float] Redefined FLT_EPSILON
FLT_EPSILON is now compliant with the definition : the difference
between 1 and the next representable float.

Change-Id: I4f79c3eee93447e76893d850bd84265c9d45aca5
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
aea9176f86 [apps/graph] Added tests for graph caching
Wrote some tests to check that the caching process does not lead to
aberrant values.

Change-Id: I28137e66f430dbcf4417733d1274319dbadfc9af
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
b0533e6836 [apps/graph] Changed cache tolerance
This fixes a bug where, when drawing 1/x, a vertical bar would appear on
0, because of false positive cache hits.

Change-Id: I2eafeac5e254c8a556769a41c8edc532db44383a
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
beb228fa78 [apps/graph] Fixed cache step quirks
Change-Id: I5b630301ab2a4b17a5a4d77c7d9a05120449e55e
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
1bee23cf4f [apps/graph] Reworked function caching
Instead of being memoized all at once before display, functions values
are now stored at evaluation time. Fixed some quirks with caching
preparation.

Change-Id: I5d212c271c8c41a6dc9074a15c720f0bccf8ac40
2020-11-04 15:07:19 +01:00
Gabriel Ozouf
42fcf557b8 [apps/graph] Limited number of cached functions
The caches used for function values memoization are now stored in
ContinuousFunctionStore : there are now only a fixed number, instead of
one per function. This effectively enables caching only for the first
few functions on screen, while reducing the memory usage.

Change-Id: I2ade091717f73a14a756fe527c773db8e8627be7
2020-11-04 15:04:24 +01:00
Gabriel Ozouf
95fef86ec0 [apps/graph] Activated caching for graph drawing
Added a default argument to CurveView::drawCurve : a function to initiate the
memoization of continuous functions. The function is implemented in
ContinuousFunctionCache and provided by GraphView. This should be invisible
to other types of curves that rely on CurveView::drawCurve.

Change-Id: I59aa55d67154b6d4bf9614b7ed87c48408773d86
2020-11-04 15:00:43 +01:00
Gabriel Ozouf
c70b545ba1 [apps/shared] Cache lookup on function evaluation
When evaluating a ContinuousFunction for a float value, the function
will first try to ask its cache (if it has been filled beforehand).

Change-Id: I519d2d3dcf344ba63e30a0f011db2306c7141315
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
a9c633a540 [apps/shared] Functions cache clears on change
Added several triggers to clear the cache when the function's type,
range or content is changed.

Change-Id: I4f49a90bb6571e335a4a601723d7715b8de1e25e
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
552dca9494 [apps/shared] Implemented function memoization
ContinuousFunction now has an attribute of type ContinuousFunctionCache,
implementing methods to store and retrieve 320 float values, in order to
speed up function display in Graph.

Change-Id: I6f7ccdf3ae3c6dd8b08b93d786c8d0be7aa4dee8
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
0308b18400 [liba/float.h] Comment on FLT_EPSILON's definition
Change-Id: Iac2da58d9a2f8e4b1bb131255341696db99df188
2020-11-04 14:45:35 +01:00
Gabriel Ozouf
4007f4d452 [apps] Tweaked panning for better cache alignement
Method InteractiveCurveViewRange::panToMakePointVisible now moves the
range of a whole number of pixels when panning horizontally. This allows
the cache of cartesian functions not to be invalidated.

Change-Id: Idb9904fef134dd13458e1f2287b0fe5145e8aec7
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
5bc19af196 [apps/shared] Revert to pack record
It appeared that without the packed keyword, the compiler did not handle
access to unaligned record data members, which leads to crashes on the
device.

Change-Id: I401f075e7f62458a4733baa8d81983d4be34b730
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
969fea7494 [poincare] Improve float variables usage
Change-Id: I965c425cbe70c0a201c504565d5d0991618ce0b9
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
10de970814 [poincare] Remove unnecessary unit norm code
Change-Id: I7d7abf88d1dcc10fb4ae0f6b3570ebfe4b4af311
2020-11-04 14:45:35 +01:00
Hugo Saint-Vignes
9f2c4bccdf [apps/math_toolbox] Reorder toolbox units
Change-Id: I2a599c90ce221c173bd05bfa2d31e908c6bdbbdf
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