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.

Reply via email to