Commit Graph

750 Commits

Author SHA1 Message Date
Émilie Feral
ecf3f2ea0f [poincare] Create a a flag on Expression that is set when the
approximation encouters a complex value

All approximation methods take the complex format into account.
2019-01-10 11:42:04 +01:00
Émilie Feral
26e2e9be0d [poincare] Add complex format as an argument of simplification 2019-01-10 11:42:04 +01:00
Émilie Feral
c6039423a9 [poincare] When simplifying an expression, also compute the approximation from the reduced
expression to avoid loss of precision.

If an expression is reduced to a ComplexCartesian(a, b), we compute the
approximation from ComplexCartesian(a,b) instead of going through the
potentially complicated expression resulting from beautifying
(sqrt(a^2+b^2)*exp(i*(arctan(b/a) -Pi/2*sign(b)) for example)
2019-01-10 11:42:03 +01:00
Émilie Feral
383ac004cf [poincare] Take into account complex format in simplify 2019-01-10 11:42:03 +01:00
Émilie Feral
9efc9e02e6 [poincare] Revert simplifyForComplexFormat 2019-01-10 11:42:03 +01:00
Émilie Feral
79e7fb2183 [calculation] Use ParseAndSimplifyForComplexFormat instead of
ParseAndSimplify
2019-01-10 11:42:03 +01:00
Léa Saviot
fd34e83a56 [apps] In curve views, display floating labels when axes non visible 2019-01-10 11:42:02 +01:00
Léa Saviot
fa24a4fd54 [apps] Put the Y labels left of the Y axis 2019-01-10 11:42:02 +01:00
Léa Saviot
6b381957df [apps] Handle cut labels in curves.
Draw all labels even if cut. If only the extrema horizontal labels are
drawn, pick the labels 1 and numberOfLabels-2 if the real extrema labels
will be cut.
2019-01-10 11:42:02 +01:00
Léa Saviot
9ac32cf8fe [apps] Use standard variables in curve view 2019-01-10 11:42:02 +01:00
Léa Saviot
d40b17a45e [apps] In curve view, draw the graduation even if the label is not drawn 2019-01-10 11:42:02 +01:00
Léa Saviot
c14483b0e7 [apps/shared] Clean some code in CurveViewRange 2019-01-10 11:42:02 +01:00
Léa Saviot
8c6ffa6d42 [apps] Fix graph X axis labels that read the same
Scenario: just zoom in in a graph
Fix:
- Do not truncate labels.
- Label size is computed depending on available size and number of
 labels.
- If labels cannot be displayed properly, just display the minimal
and maximal labels!
2019-01-10 11:42:02 +01:00
Léa Saviot
f2310a8814 [apps] Change CurveViewRange::computeGridUnit parameters 2019-01-10 11:42:02 +01:00
Léa Saviot
2aa92ecffa [apps] Add a proof for CurveViewRange::computeGridUnit's algorithm 2019-01-10 11:42:02 +01:00
Léa Saviot
a65bdb1dfc [apps] Increase the Y axis label buffer sizes in curve views 2019-01-10 11:42:02 +01:00
Léa Saviot
d76c77f323 [apps] Prevent too much zooming on curve views
This removes curve drawings that are ugly because of float imprecision,
such as cos(x)^2+sin(x)^2
2019-01-10 11:42:02 +01:00
Léa Saviot
36faebab3d [apps] Fix some KDCoordinate to float conversions 2019-01-10 11:42:02 +01:00
Léa Saviot
8de74f4158 [apps] Fix one pixel in CurveView::stampAtLocation 2019-01-10 11:42:02 +01:00
Léa Saviot
4c6a5c9819 [apps] When zooming on a curve, do not change the yRange
It changed because of the zoom banner
2019-01-10 11:42:02 +01:00
Léa Saviot
cea413e91d [apps] Fix Orthonormal setting in graphs
It was not perfectly orthormal.
2019-01-10 11:42:02 +01:00
Léa Saviot
020e459379 [apps] Clean shared/interactive_curve_view_range.cpp 2019-01-10 11:42:02 +01:00
Léa Saviot
c50aba1873 [apps] Clean shared/initialisation_parameter_controller.cpp 2019-01-10 11:42:02 +01:00
Léa Saviot
cf79795540 [apps] Fix blob left of screen when drawing curves
Try for instance f(x)=cos(x) in Graph
2019-01-10 11:42:02 +01:00
Léa Saviot
058b49a063 [apps/Seq/Reg] Do not pan to cursor if no yAuto 2019-01-10 11:42:02 +01:00
Léa Saviot
18381fd334 [apps] Add FLT_EPSILON in float comparisons in interactive_curve_vw_rge
This fixes the removal of yAuto when displaying the function f(x)=cos(x)
2019-01-10 11:42:02 +01:00
Léa Saviot
37ac12b1da [apps/graph] When changing the window manually, do not pan to cursor 2019-01-10 11:42:02 +01:00
Léa Saviot
531b555949 [apps/sequence] Fix method that should be virtual pure
The following scenaro crashed in DEBUG=1 and did not resize the window
correctly in DEBUG=0.
Got to sequence
u(n)=n
Go to sequence/graph
Remove yAuto
Go to sequence/list
v(n) = cos(n)
remove u(n)
Go to sequence/graph
2019-01-10 11:42:02 +01:00
Léa Saviot
de3d200b81 [apps/graph/reg/seq] Do not switch on y auto each time graph appears 2019-01-10 11:42:02 +01:00
Léa Saviot
19e8b2ee1c [apps] Fix InteractiveCurveViewController::addMargin 2019-01-10 11:42:02 +01:00
Léa Saviot
404db60a3d [apps/shared] Code cleaning and inlining 2019-01-10 11:42:02 +01:00
Léa Saviot
3595a8e628 [apps/sequence] Align sequence title and expression baselines 2019-01-10 11:42:02 +01:00
Léa Saviot
64446f24e6 [apps/graph] Increae horizontal margin of function name in list 2019-01-10 11:42:02 +01:00
Léa Saviot
964703bb03 [apps/graph] Increase name column width to max when editing function name 2019-01-10 11:42:02 +01:00
Léa Saviot
6ba70c332b [apps/graph] Fix redrawing bugs due to missing memoization reset 2019-01-10 11:42:02 +01:00
Léa Saviot
6e77bb4123 [apps] Revert Equal after function name 2019-01-10 11:42:02 +01:00
Léa Saviot
ff33ad3ad1 [apps] In FunctionTitleCell, draw the equal separately
This way, we can better manage the margins around the equal
2019-01-10 11:42:02 +01:00
Léa Saviot
738d21cc2b [apps/graph] Align function name and expresion baselines 2019-01-10 11:42:02 +01:00
Léa Saviot
569e0e884e [apps/graph] Memoize baselines in functions list 2019-01-10 11:42:02 +01:00
Léa Saviot
9b9a0aa009 [apps/graph] Add scroll indicators in funcitons list 2019-01-10 11:42:02 +01:00
Léa Saviot
8e8d99e8e9 [apps/graph] Do not draw the vertical separator in functions list 2019-01-10 11:42:02 +01:00
Léa Saviot
348c5c0dae [apps/graph] Add equal after function name 2019-01-10 11:42:02 +01:00
Léa Saviot
ff1c137fe1 [apps/sequence] Add scroll indicators in sequence list 2019-01-10 11:42:02 +01:00
Léa Saviot
3b2eaa5dea [apps/sequence] Sequence title cells are aligned to the right 2019-01-10 11:42:02 +01:00
Léa Saviot
216b16fc11 [apps/shared] Increase memoized heights count in StorageExpModelListCtrl 2018-12-20 14:51:51 +01:00
Léa Saviot
13419f434f [apps/shared] Memoize in StorageFuncListCtrl::indexFromCumulatedHeight 2018-12-20 14:51:51 +01:00
Léa Saviot
6740198e06 [apps/shared] Constexpr reset value in storage_expr_model_list_ctrlr 2018-12-20 14:51:51 +01:00
Léa Saviot
56504525c9 [Makfile] Remove superfluous test_objs
We now build all objects even for test, so we do not need most of the
previous test_objs
2018-12-19 09:44:58 +01:00
Léa Saviot
f6a5759a16 [poincare] Fix the replacement of unknowns in the storage
In the Graph app, define f(x) = cos(x) and g(x)=diff(f(x),x,x).
The graph and table are perfectly computed, but in the Calculation apps,
g(5) fails.
2018-12-19 09:40:37 +01:00
Émilie Feral
ec08f027c0 [poincare] Revert: Use Simplify instead of Reduce II
To approximate an expression, it is more precise to
approximate its simplified form than its reduced form. Indeed, we want
to minimize the number of nodes in the expression before approximating.
For instance, a/b has fewer nodes than a*b^-1.
2018-12-18 10:46:20 +01:00