[GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-406-g9ada7a7

Alexei Sheplyakov git at ginac.de
Sun Dec 15 16:28:39 CET 2013


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  9ada7a7f5c47e512b7bf6057d4c013612be9a33b (commit)
      from  e5c76f659e2e882da3d5dba60502d6851f782bf3 (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 9ada7a7f5c47e512b7bf6057d4c013612be9a33b
Author: Matthias Dellweg <dellweg at tp1.uni-duesseldorf.de>
Date:   Tue Dec 10 10:55:28 2013 +0200

    expairseq::match(): no side effects if match failed. Fixes spurious match failures.
    
    > match(sin(y)*exp(b)+sin(x)*exp(a), sin($0)*exp(a)+exp(b)*sin($1))
    FAIL
    
    The reason is that expairseq::match() might assign a wildcard even if
    the match fails. The first attempted submatch is sin(y)*exp(b) with
    sin($0)*exp(a). It fails (as it should) but $0 == y gets assigned as
    a side effect (which is wrong). Next submatch is sin(x)*exp(a) with
    sin($0)*exp(a) (the same pattern as in the first submatch). This one
    fails because of spurious $0 == y assignment.
    
    Due to the unpredicatable term ordering the sequence of submatches might
    be different and the match might succeed (as it should). This makes
    debugging a bit more funny.
    
    Signed-off-by: Matthias Dellweg <dellweg at tp1.uni-duesseldorf.de>
    
    [Alexei Sheplyakov: figure out the cause of the problem, make a test case]

-----------------------------------------------------------------------

Summary of changes:
 check/match_bug.cpp |   44 ++++++++++++++++++++++++++++++++++++++++++++
 ginac/expairseq.cpp |   26 +++++++++++++++++++++-----
 2 files changed, 65 insertions(+), 5 deletions(-)


hooks/post-receive
--
GiNaC -- a C++ library for symbolic computations


More information about the GiNaC-devel mailing list