I generally agree with Aaron and Brian that I'd like to see CSymPy be as
small as possible and focus more on SymPy-CSymPy integration.  My opinion
is that performant cores should be small.

That being said I think that it's generally a good thing for Ondrej to go
off and screw around with a C++ implementation in isolation.  Attaching
himself to the existing SymPy infrastructure would probably bog down
development.  Even O(n) performance gains are a good thing, and this is
something about which Ondrej knows quite a lot.

I also think that, if CSymPy can make a compelling case for integration
(perhaps through a PyDy solution), then at least some of the integration
effort should come from the SymPy side, changing itself to adhere to
something more CSymPy friendly (e.g. changing how Function works).  I think
that working on interoperation is good for SymPy in the long run.

Ondrej, I think that folks would generally be more comfortable if we better
understood the strategy for eventual SymPy-CSymPy integration.  Right now I
don't have a good handle on this.  From far away it's not apparent that
this is a major design goal of CSymPy.


On Wed, Apr 23, 2014 at 3:43 PM, Matthew Rocklin <[email protected]> wrote:

> PyDy sounds like the perfect proof of concept test for CSymPy
>
>
> On Wed, Apr 23, 2014 at 3:42 PM, Jason Moore <[email protected]> wrote:
>
>> Yeah, all I'm planning to do on that PR is to make a hack that inserts
>> csympy data types into the core mechanics objects (Vectors, Dyadics, etc).
>> The nice thing about the vector and mechanics module is that we only use
>> symbols, functions, differentiation, addition, multiplication, basic trig
>> functions, etc. Really a small subset of functionality that sympy offers.
>> This will give a simpler test to see what it takes to have csympy work
>> seamlessly. I'll try to spend some time this weekend to update that PR with
>> Ondrej's latest features in csympy.
>>
>>
>> Jason
>> moorepants.info
>> +01 530-601-9791
>>
>>
>> On Wed, Apr 23, 2014 at 6:36 PM, Ondřej Čertík 
>> <[email protected]>wrote:
>>
>>> On Wed, Apr 23, 2014 at 4:31 PM, Ondřej Čertík <[email protected]>
>>> wrote:
>>> > On Wed, Apr 23, 2014 at 4:27 PM, Aaron Meurer <[email protected]>
>>> wrote:
>>> >> Well that would only affect what you do in your own workspace. Much
>>> >> better would be if sympy transparently imported and used csympy
>>> >> wherever relevant when it was available, so that sympy.Symbol would be
>>> >> csympy.Symbol, and so on. Then everywhere in sympy would use csympy.
>>> >
>>> > That's a good idea. There is of course the issue with assumptions,
>>> > attached to the Symbols...
>>> >
>>> >>
>>> >> But this requires full interoperability between sympy and csympy
>>> >> (which is one of the things I have not seen yet). I think the next
>>> >> task for csympy should be:
>>> >>
>>> >> - Patch sympy/core/symbol.py to use csympy.Symbol (so that from
>>> >> sympy.core.symbol import Symbol gives csympy.Symbol)
>>> >> - Run the tests
>>> >> - Fix whatever fails
>>> >> - Repeat with further csympy objects
>>> >>
>>> >> And always do this with every csympy object that is written. We
>>> >> perhaps need a more unified way to automatically replace anything in
>>> >> sympy with csympy (especially since Ondrej still hasn't provided a
>>> >> clear separation between what will and will not be in csympy, at least
>>> >> in my mind).
>>> >>
>>> >> Then we can stop making these artificial benchmarks and performance
>>> >> speculations, and just see what really is slow, and what really speeds
>>> >> things up, and, just as importantly, what doesn't speed things up
>>> >> enough to warrant the complexity cost.
>>> >>
>>> >> I would focus on this rather than PyDy specifically. It may be
>>> >> possible to use csympy in PyDy without doing this, but it will be a
>>> >> wasted effort if you eventually do this and then the PyDy specific
>>> >> implementation can be scrapped.
>>> >
>>> > The goal of using CSymPy in PyDy is precisely to do this switch
>>> > (single line of code)
>>> > in PyDy only, not the core of SymPy. Because that's a lot simpler (no
>>> > need to worry
>>> > about assumptions) and tons of tests. And doing a real application
>>> > where speed matters.
>>>
>>> So that we are not just talking, here is the actual code:
>>>
>>> https://github.com/sympy/sympy/pull/7397
>>>
>>> It's simple, and we are still trying to make it more simple (=more
>>> compatible
>>> with SymPy), until it is really just one line. There are some technical
>>> issue
>>> like our Function("f") would correspond to just raw class in C++, except
>>> that
>>> C++ doesn't support that, so I have a function called
>>> function_symbol("f", x),
>>> and so on. This could be abstracted in the Python wrappers and so on.
>>> This
>>> will all be fixed eventually.
>>>
>>> Aaron, I think you want to have full compatibility with SymPy
>>> immediately. But
>>> there could be significant speed/efficiency cost, and I need to make
>>> sure that the
>>> speed of the C++ core is optimal.
>>>
>>> The time frame is roughly this summer, when we implement enough features
>>> to be useful for PyDy and do some serious benchmarking on real world
>>> problems.
>>> After that it would be good time to review the Python API to make sure
>>> it works well
>>> with SymPy and start integrating it more. For now I just keep things
>>> simple to get the job done.
>>>
>>> Ondrej
>>>
>>> >
>>> > After that, do this in sympy.core --- that requires tackling
>>> > assumptions and maybe few
>>> > other things.
>>> >
>>> > Ondrej
>>> >
>>> >>
>>> >> Aaron Meurer
>>> >>
>>> >> On Wed, Apr 23, 2014 at 5:19 PM, Matthew Rocklin <[email protected]>
>>> wrote:
>>> >>> Perhaps a good target workflow would be something like the following
>>> >>>
>>> >>> from sympy import *
>>> >>> from csympy import *
>>> >>>
>>> >>> ... do work as usual ...
>>> >>>
>>> >>> In other words it would be nice for csympy to take over from sympy
>>> where it
>>> >>> has functionality, but for sympy-proper to fill in all of the holes.
>>> >>> Ondrej, is this on your roadmap at all?
>>> >>>
>>> >>> It gets weird of course when you have something like Expr(...) +
>>> CExpr(...)
>>> >>>
>>> >>> --
>>> >>> 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/CAJ8oX-Fh%3DFR5LM2Uehn%2BWTdFs%3D8QBys%2B2BoPXUdZKgdWeHaqbA%40mail.gmail.com
>>> .
>>> >>>
>>> >>> For more options, visit https://groups.google.com/d/optout.
>>> >>
>>> >> --
>>> >> 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/CAKgW%3D6Kn9fKNFN7uNya_pLaj0%2Bqy0d%3DisZ8_6SKdp8sGwwBMKQ%40mail.gmail.com
>>> .
>>> >> For more options, visit https://groups.google.com/d/optout.
>>>
>>> --
>>> 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/CADDwiVD_Knxf1%2B82-vmGOyPA%3DWfZgg1Np3PMyUDHoYaRzt4nqA%40mail.gmail.com
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
>> 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/CAP7f1AjQkV8E0_Y0D2UQSj-W%2BHNuDh1qXrsv2K8YoG4pOFBgMQ%40mail.gmail.com<https://groups.google.com/d/msgid/sympy/CAP7f1AjQkV8E0_Y0D2UQSj-W%2BHNuDh1qXrsv2K8YoG4pOFBgMQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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/CAJ8oX-FpCYeJVkw186rUOi1cnYD0RKWF9XAOH9%3DAHZSfDAZibA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to