[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