Commit Graph

137 Commits

Author SHA1 Message Date
Émilie Feral
221b4af631 [apps/calculation] Fix warning: taking address of a packed member is
unsafe
2019-09-04 15:36:37 +02:00
Léa Saviot
3849aba0c2 [apps/calculation] Don't display exact result for parametered expr
Otherwise symbolic computation is possible with, for instance :
diff(x+x,x,2)
    diff(2x,x,2) = 2
2019-08-27 17:21:48 +02:00
Léa Saviot
7e397ac92b [apps/calculation] Clean code 2019-08-27 17:21:01 +02:00
Léa Saviot
48971b6eb3 [apps/calculation] Display approx only if input = exactOutput 2019-08-27 11:09:16 +02:00
Léa Saviot
c980f8bf7c [apps/calc] Bigger serialization buffer to fix glitch
Otherwise, identity(15) displays both exact and approximate outputs,
because the approximation serialization does not fit in the buffer.
2019-08-22 10:33:40 +02:00
Émilie Feral
42bb1440e3 [apps/calculation] Inputs involving 'frac' display only the approximate
output
2019-08-20 11:51:37 +02:00
Émilie Feral
1cc09de9ae [apps/calculation] Invalid calculation height memoization when leaving
the app.

Fix wrong memoization: in calculation app input '[[1+i, 2][3,4]]', change
the complex format to Polar, go back to the calculation app --> the
calculation height was no recomputed despite the fact that the approximation
output changed.
2019-08-19 09:59:01 +02:00
Léa Saviot
4bbb8167f1 [poincare/matrix_inverse] Handle memory error in MatrixInverse 2019-08-08 17:22:04 +02:00
Léa Saviot
76a950d572 [apps/calculation] Add assertions instead of escape cases 2019-08-08 17:22:03 +02:00
Léa Saviot
f5e11b7d74 [apps/calculation] Exception checkpoint around secondary method
When computing [[2,3,2][ln(2),1,5][1,8,9]] there was a memory pool
failure because of the computation of
exactAndApproximateDisplayedOutputsAreEqual. Because displaying the
right equal symbol is less important than displaying a result, we
encapsulate the method in an exception checkpoint: if there was not
enough memory on the pool to compute the equal sign, just return
EqualSign::Approximation.
2019-08-08 17:22:03 +02:00
Léa Saviot
c7fd11e4b0 [apps/calculation] Calculation store has one big buffer for calculations 2019-08-08 17:22:02 +02:00
Léa Saviot
1642df476a [apps/calculation] Don't display exact result for condifence/prediction 2019-08-08 16:29:38 +02:00
Léa Saviot
e5e9f0bf78 [apps/calculation] Fix Calculation::displayOutput
Should return ApproximateOnly if the exactOutput expression is Undefined
2019-08-08 16:29:38 +02:00
Léa Saviot
168e0b492f [apps/calculation] Don't display approximate matrices results only 2019-08-08 16:29:38 +02:00
Léa Saviot
61cf762eef [poincare] Expression::ReductionContext 2019-08-08 16:29:37 +02:00
Émilie Feral
8c2f8a9aea [calculation] DisplayOutput: avoid to recursively scan the expression
multiple times instead of one.
2019-05-03 15:54:22 +02:00
Émilie Feral
cbbb827532 [poincare] Clean recursive tests on expression (isApproximate, IsRandom,
IsMatrix etc)
2019-05-03 15:54:22 +02:00
Émilie Feral
7f373a5c3c [calculation] Calculations involving matrices display only approximate
results and should not toggle the exact output.
2019-05-03 15:54:22 +02:00
Émilie Feral
138587ee8e [calculation] Calculation: memoized display output 2019-05-03 15:54:21 +02:00
Émilie Feral
a30191ccb4 [calculation] Change name: 'calculation selected' --> 'calculation
expanded'
2019-05-03 15:54:21 +02:00
Émilie Feral
12876b177f [calculation] Calculation: discard Calculation::toggleDisplayExact (this
feature will be developed later)
2019-05-03 15:54:21 +02:00
Émilie Feral
7db575a4ba [calculation] Calculation: improve memoization of a calculation height 2019-05-03 15:54:21 +02:00
Émilie Feral
6fd5cb360b [calculation] Improve Calculation model: new display mode
ExactAndApproximateToggle
2019-05-03 15:54:20 +02:00
Léa Saviot
8ea5f1b642 [apps/calc] If result contains random/round, display approximation only 2019-05-03 15:54:20 +02:00
Léa Saviot
b007286581 [apps/calc] displayExactOuputOnly only if the input is store in function
This prevents 1+x->f(x) from displaying 1+x = undef
[[1,2]] + [[1][2]] displays undef
2019-05-03 15:53:21 +02:00
Léa Saviot
6f7fe5089a [apps/calculation] Calculation::DisplayOutput can be Exact/Approx/Both 2019-05-03 15:53:21 +02:00
Léa Saviot
267d27f114 [poincare] Remove symbolic computation 2019-05-03 15:53:21 +02:00
Léa Saviot
496d346049 Remove max/min inline from KDCoordinate header 2019-05-03 15:53:19 +02:00
Léa Saviot
52ae2a2643 [apps/calc] approximateOutput handles unparsable m_approximateOutputText
This fixes a crash when computing:
[[1, 0, -1, 0][0, 1, 1, 0][0, 2, 0, 1][1, 0, 0, 1]]^(-1)
2019-04-12 15:16:05 +02:00
Émilie Feral
7b5f3c570d [poincare] Change the way Expression are built 2019-02-21 11:29:35 +01:00
Léa Saviot
31866aaaf5 [apps/calculation] Fix display of unreal
For instance ln(-2) in real mode should display "unreal"
2019-01-21 11:59:20 +01:00
Léa Saviot
be3ab70e67 [apps/calculation] Do not display approximation if it is unreal
Fixes: sqrt(-1) in real complex format, then change complex format, it
then displays unreal = undef
2019-01-10 11:42:05 +01:00
Léa Saviot
027148f376 [apps/calculation] Clean comments 2019-01-10 11:42:05 +01:00
Léa Saviot
271e22628b Typo in comment 2019-01-10 11:42:05 +01:00
Émilie Feral
fe8825df35 [shared] PoincareHelpers: update the complexFormat (force it to
Cartesian with complex input).
2019-01-10 11:42:04 +01:00
Émilie Feral
786cefc3d4 [calculation] No special case for unreal calculation, it is handled in
simplication and approximation routines.
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
6fd3a155df [calculation] Take into account the complex format 'real' 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
8f63416097 [calculation] Fix Calculation operator == 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
fb44f8617c [apps/calculation] Fix display exact and approx results
If the results are equal but their layouts not, because of the number of
significant digits for instance, display both the equal and approximate
results.
2018-12-03 12:32:51 +00:00
Émilie Feral
cf92eb8506 [poincare] Discard useless argument 'replaceSymbols' from simplification
routine
2018-11-30 09:53:31 +01:00
Léa Saviot
53e4a290f7 [poincare] Rename Expression:parse in Parse 2018-11-23 12:04:09 +01:00
Léa Saviot
33676e915a [apps] Check that serialized expression is not too long in Graph 2018-11-23 12:04:09 +01:00
Léa Saviot
a289d77425 [apps/calculation] Fix non returning method 2018-11-23 12:04:08 +01:00
Léa Saviot
63e83c246b [poincare] Undefined::Name() gives "undef" 2018-11-23 12:04:08 +01:00
Léa Saviot
1cb9d5445c [apps/calculation] Do not display approximate output if it is undef 2018-11-23 12:04:08 +01:00