Hi, I am sorry I am being so unresponsive. To be totally honest I do not think I will be able to keep up with you guys. The code is changing (I'm sure for the better) and my memory is already failing me with regards to internal details. Pursuing a PhD in mathematics I simply do not have the time to keep up to date with sympy.
That being said, let me try my best. As Aaron has explained, the G-function "algorithm" for integration is a heuristic pattern matching algorithm that employs tables of mellin transforms (in the convenient form of G-functions). The basic idea is that in order to compute an integral integrate(f, x, 0, oo) we try to write (*) f = x^a * g_1 * g_2 and then try to recognise g_1 and g_2 as special cases of meijer g functions. Once this is done, there is a convolution theorem which expresses the definite integral as another g-function, under certain conditions. So the "algorithm" really has about four parts: (1) split the function f in the form (*) (2) recognise (combinations of) elementary functions as G-functions (3) check the conditions of the convolution theorem (4) expand the g-functions into elementary functions again (There are some additional difficulties, such as the fact that the G-functions really must be considered as continued analytically to the Riemann surface of the logarithm in general, but let's try and not get bogged down.) All of thees steps are heuristic! Moreover, steps (2), (3) and (4) involve highly complicated tables of mathematical expressions, making the whole thing a testing nightmare. The testing philosophy I went for with meijerint was to look at a lot of common "book" integrals and make sure the algorithm can do them. What this means may not be entirely clear. But certainly we want to have a definite integral returned in elementary terms, and non-vacuous conditions under which the result is true. But there is definitely no *correct* answer. So: If you change something about the internals of the algorithm, expect a lot of tests to fail. The thing to do is to ensure the new results are mathematically equivalent and at least as "nice" (simple) as before. This is unfortunately very tedious. All the best, Tom -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/890b0364-f2e3-4189-883f-a25da4d4d11e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
