Some remarks to what I wrote earlier: the simplification code
changes only nested root(s) and preserves the other. So
in
rsimp(sqrt(12 + 2*sqrt(6) + 2*sqrt(14) + sqrt(6)*sqrt(14)))
example the answer is in terms of original roots, that is
sqrt(6) and sqrt(14) and one new root that is sqrt(42).
Martin in sci.math.symbolic showed result from Derive,
namely sqrt(2) + sqrt(3) + sqrt(7). This result is
simpler but I am affraid misses the point. Namely,
roots are multivalued and minimizing changes to roots
is helps in preserving intended value of the expression.
Second, while in example above factoring numbers under
root leads to simplification, the method used by rsimp
does not depend on factoring numbers, it still works
even when there are troubles with factorization.
It is worthwile to implement simplifications based on
factorization, but they not always work and may be
undesirable in some situations. So 'rsimp' perform
denestiong with minimal changes to roots. And I am
working on separate routine which is going to
perform simplifications based on factoring. The idea
is that 'rsimp' could be used alone or combined with
planned second routine, depending on the needs.
--
Waldek Hebisch