Dear list,

I would like to open a discussion on how to merge my (fairly
extensive) fixes to the gruntz algorithm. As far as I understand
release is currently top priority, so merging a large change might
seem a no-go (and I shall not assume to know better ^^), but I think
shipping quite badly broken code is not very satisfying either. Let me
press on under the working assumption that there is interest of
getting this in quickly.

Currently the fixes are spread out over three pull request, where each
contains (depends on) the former: [1] [2] [3].

As a short recap, [1] adds series expansions for multivariate
functions and then uses this to be able to compute series expansions
of atan2. IMHO this pull request is really straight-forward. The main
aim of [2] is to compute certain limits of gamma functions. For this
it adds support for asymptotic expansions of functions (near oo), adds
the stirling expansion of the loggamma function, and extends gruntz to
use this. While doing so I hit a number of bugs which I fixed, and
these fixes are included in [2]. But eventually I realised that there
are really many fairly fundamental bugs which I deferred fixing.
Finally [3] fixes all bugs I could find. The main method to uncover
them was to add a selection of (fairly complicated) limits from
gruntz' thesis which the algorithm should be able to handle.

A word about the status of these pull requests: [1] and [2] are
rebased over current master and ready to be reviewed/tested/pushed in.
[3] is ready to be reviewed but not rebased over master, in fact not
even over the latest version of [2]. The reason is described in the
pull request.

I see three strategies for merging this:

(1) "Waterfall". Review [1], I do any requested changes, then you push
it in. Same for [2]. Then I cherry-pick [3] on top of master (might
take a few hours), and when that is done proceed as before with [3].

(2) "Compromise". Push in [1] moderately quickly. I then rebase all of
[3] (i.e. including 2) into a sane state so that it can be reviewed as
a whole.

(3) "All-in-one". I rebase all of [3] (i.e. including [2] including
[1]) on top of master, and everything is rebased together.

I don't really see what speaks for (3), just included it for
completeness.
Personally I prefer (2), mainly because I won't have to cherry-pick
[3] over a possibly diverged [2]. I think it also makes sense from a
technical perspective because some commits from [3] override commits
from [2] (i.e. I did some fixes for [2] and then did some more fixes
in [3] to the same code).

In any case, I will do whichever method you prefer. If you want to
defer this until after release, I'm fine too.

[1] https://github.com/sympy/sympy/pull/198
[2] https://github.com/sympy/sympy/pull/216
[3] https://github.com/sympy/sympy/pull/236

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to