Ah, ok, excellent. So no missing patch. :)
You know, I am cleaning up my mailbox a bit, I still have ~700 emails to do. Ondrej 2009/1/28 Stepan Roucka <[email protected]>: > This was pushed in in a slightly modified form IIRC. > > http://git.sympy.org/?p=sympy.git;a=commit;h=7f340f9d00b7b756a17ad605cf7b6775225fccbe > http://git.sympy.org/?p=sympy.git;a=commit;h=aec5545e3b587b8fe3b9b6dd7a6b6a051b3bb804 > http://git.sympy.org/?p=sympy.git;a=commit;h=aafafcd789ecaab7244973e797baa7e996cdd521 > > The problem with failing heurisch test was resolved later: > http://git.sympy.org/?p=sympy.git;a=commit;h=0a0d6bdc278a087ec2b33c86ab0761027f90f801 > > Stepan > > 2009/1/28 Ondrej Certik <[email protected]>: >> What is the status of this patch? >> >> Ondrej >> >> On Mon, Oct 6, 2008 at 2:58 PM, Mateusz Paprocki <[email protected]> wrote: >>> >>> My e-mail client went weird. Sorry for mess. >>> >>> Mateusz >>> >>> On 7 Paź, 00:43, Mateusz Paprocki <[email protected]> wrote: >>>> Hi, >>>> >>>> I don't like to XFAIL any tests, I see it ugly, but here a fix is not >>>> so straightforward. For now lets stick to XFAIL in case of >>>> test_heurisch_symbolic_coeffs. Alternatively we could assume that y is >>>> nonnegative, however this would hide the real problem. >>>> >>>> Now some notes about the "real" problem: >>>> >>>> [1] Depending on the order of equations in the system given to >>>> solve_linear_system, the function returns different results - more or >>>> less pretty, but there are cases for which it gives no solution even >>>> when such exists. This is the case for test_heurisch_symbolic_coeffs. >>>> >>>> [2] Depending on the order of computation hashes of expressions vary. >>>> First apply this patch: >>>> >>>> diff --git a/sympy/integrals/risch.py b/sympy/integrals/risch.py >>>> index 843d90b..20b4e00 100644 >>>> --- a/sympy/integrals/risch.py >>>> +++ b/sympy/integrals/risch.py >>>> @@ -362,7 +362,12 @@ def heurisch(f, x, **kwargs): >>>> else: >>>> equations[dependent] = coeff >>>> >>>> - solution = solve(equations.values(), *coeffs) >>>> + system = equations.values() >>>> + >>>> + if kwargs.get('debug', False): >>>> + print "\nHEURISCH: %s" % map(hash, sorted(system)) >>>> + >>>> + solution = solve(system, *coeffs) >>>> >>>> if solution is not None: >>>> return (solution, candidate, coeffs) >>>> diff --git a/sympy/integrals/tests/test_risch.py >>>> b/sympy/integrals/tests/test_risch.py >>>> index e07a514..9176c31 100644 >>>> --- a/sympy/integrals/tests/test_risch.py >>>> +++ b/sympy/integrals/tests/test_risch.py >>>> @@ -105,11 +105,11 @@ def test_heurisch_special(): >>>> def test_heurisch_symbolic_coeffs(): >>>> assert heurisch(1/(x+y), x) == log(x+y) >>>> assert heurisch(1/(x+sqrt(2)), x) == log(x+sqrt(2)) >>>> - assert heurisch(1/(x**2+y), x) == I*y**(-S.Half)*log(x + >>>> (-y)**S.Half)/2 - \ >>>> - I*y**(-S.Half)*log(x - >>>> (-y)**S.Half)/2 >>>> - >>>> assert trim(diff(heurisch(log(x+y+z), y), y)) == log(x+y+z) >>>> >>>> +def test_heurisch_symbolic_coeffs2(): >>>> + assert heurisch(1/(x**2+y), x, debug=True) == >>>> I*y**(-S.Half)*log(x + (-y)**S.Half)/2 - I*y**(-S.Half)*log(x - >>>> (-y)**S.Half)/2 >>>> + >>>> def test_heurisch_hacking(): >>>> assert heurisch(sqrt(1 + 7*x**2), x, hints=[]) == \ >>>> x*sqrt(1+7*x**2)/2 + sqrt(7)*asinh(sqrt(7)*x)/14 >>>> >>>> Now consider three cases: >>>> >>>> $ SYMPY_USE_CACHE=no ./bin/isympy -q >>>> Python 2.5.2 console for SymPy 0.6.2-hg (cache: off) >>>> >>>> In [1]: from sympy.integrals.risch import heurisch >>>> >>>> In [2]: heurisch(1/(x**2+y), x, debug=True) >>>> >>>> HEURISCH: [-1558621035, -1289355954, -1389281654, 307449972, >>>> -212732511, -832764003, -379627863] >>>> >>>> $ SYMPY_USE_CACHE=no py.test -s sympy/integrals/tests/test_risch.py -k >>>> coeffs2 >>>> >>>> executable: /usr/bin/python (2.5.2-final-0) >>>> using py lib: /usr/lib/python2.5/site-packages/py <rev unknown> >>>> >>>> sympy/integrals/tests/test_risch.py[19] sssssssssss >>>> HEURISCH: [-1558621035, -1289355954, -1389281654, 307449972, >>>> -212732511, -832764003, -379627863] >>>> .sssssss >>>> >>>> $ SYMPY_USE_CACHE=no py.test -s sympy/integrals/tests/test_risch.py >>>> >>>> executable: /usr/bin/python (2.5.2-final-0) >>>> using py lib: /usr/lib/python2.5/site-packages/py <rev unknown> >>>> >>>> sympy/integrals/tests/test_risch.py[19] ........... >>>> HEURISCH: [-1558621035, -1289355954, -1389281654, -481881579, >>>> 2023858942, -136927980, 1558901530] >>>> >>>> This pattern generalizes to examples given in #896. This way we obtain >>>> differently ordered systems in heurisch, which in cooperation with [1] >>>> make it fail for particular paths of computation. >>>> >>>> So +1 for XFAIL and other patches. Problem [1] must be fixed soon and >>>> [2] probably won't fix as long as we use Python hashes. >>>> >>>> Mateusz >>>> >>>> On 6 Paź, 23:51, "Ondrej Certik" <[email protected]> wrote: >>>> >>>> > On Mon, Oct 6, 2008 at 11:32 PM, Stepan Roucka <[email protected]> >>>> > wrote: >>>> >>>> > > The first patch improves spherical harmonics code to work with >>>> > > the new rules. >>>> >>>> > > Second patch actually implements the rules. This breaks some >>>> > > (wrong) tests. >>>> >>>> > > Third patch fixes the failing tests and removes XFAIL from some other >>>> > > tests affected by the exponentiation rules. >>>> >>>> > Thanks! I am +1 to all patches. Mateusz, what do you think about the >>>> > XFAILed heurisch test? Is it a blocker for these patches to go in? >>>> >>>> > To me it seems it's better if we calculate with exponents correctly, >>>> > unless there is some deep problem caused by that in heurisch. >>>> >>>> > Ondrej >>>> >>>> >>> >>> >>> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy-patches" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sympy-patches?hl=en -~----------~----~----~----~------~----~------~--~---
