Solving means the automatic optimisation of tree structures. It is probably the most advanced feature of Syntan. It is set on as default and it can be switched off/on from main menu-settings-solving(CTRL-O).
If it is set on, the tree structure generated by the syntax analysis is systematically optimised by multiple points of view, so the resultant structure will be as simple as possible.
The time of creation of the tree structures is slightly prolonged (up to few seconds – according to the speed of PC and the complexity of tree structures), but the evaluation time is reduced, because resultant structures are simpler. As the count of evaluations is usually high, the acceleration can be remarkable.
The optimisation process tries to: unite terms if possible ( f – f = 0 ) cancel fractions if possible ( f / f = 1 , to cancel polynomials by their greatest common divider (GCD). ATTENTION! Take care of poles and zero points!) straighten nested inverted functions if their definition domain keeps unchanged (e.g. sqrt(sqr(f)) = abs(f)) track down the polynomials and to convert them to the Horner’s shape apply the commutative principle to ensure the two same functions have the same tree representations, although they were written differently apply the associative principle – to merge the equivalent terms (e.g. sin(f)*3+7+ln(f)-sin(f)-3 = ln(f)+2*sin(f)+4) use some formulae (e.g. sqr(sin(f)) + sqr(cos(f)) = 1)
Note 1: The settings main menu-settings-radically(CTRL-R) allows the optimiser to affect the definition domain of functions (annihilation of poles and zero points for example). It is off by default. Note 2: The process of optimisation is not successful everytime. There are some functions the optimisation process is too dumb to solve them. Unfortunatelly, Syntan doesn't support the distributive principle and isn't based on the artificial intelligence approach yet. However, it is a challenge for the future improvements.
"Solving" is very helpful - the application solves tasks analytically and this feature allows it to present simplified results to the user.