[GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-599-g7905061f
Richard B. Kreckel
git at ginac.de
Wed Jan 31 12:20:32 CET 2018
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GiNaC -- a C++ library for symbolic computations".
The branch, master has been updated
via 7905061f6487b278e08b103d4d142decb418535e (commit)
via e7d79ac4ff7654908b7688bc1373624119682f5c (commit)
from d0ff428fb5b7bb565a0aea69e05e5705d840c16d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 7905061f6487b278e08b103d4d142decb418535e
Author: Richard Kreckel <kreckel at ginac.de>
Date: Wed Jan 31 12:18:37 2018 +0100
Shortcut conversion ex->numeric->ex in expairseq::make_flat().
Of course, passing an ex by reference is always faster than converting
it to a numeric first (even if it is a numeric).
commit e7d79ac4ff7654908b7688bc1373624119682f5c
Author: Richard Kreckel <kreckel at ginac.de>
Date: Wed Jan 31 10:04:25 2018 +0100
Improve gcd(a, b) where one argument is a power of a symbol.
The already implemented recursion
gcd(x^n, x*p(x)) -> x*gcd(x^(n-1), p(x))
is not ambitious enough: If p(x) has a factor of x, it just goes through
the same step again, and if p(x) has a factor which is a power of x, this
is reapeted many times.
Example:
gcd(x^n, expand(x^n*(1+x)))
used to go recurse through the gcd routine n times, which could
easily lead to a stack overflow for n about 10^5.
To improve the situation, introduce a special case for gcd where one
argument is a power of a symbol and just cancel the common factor.
This turned out to be the root cause of segfaults in matrix elimination
algorithms, as reported by Patrick Schulz and Vitaly Magerya:
Cf. <https://www.ginac.de/pipermail/ginac-list/2018-January/thread.html>
-----------------------------------------------------------------------
Summary of changes:
ginac/expairseq.cpp | 3 +--
ginac/normal.cpp | 21 ++++++++++++++++-----
2 files changed, 17 insertions(+), 7 deletions(-)
hooks/post-receive
--
GiNaC -- a C++ library for symbolic computations
More information about the GiNaC-devel
mailing list