Python wrappers to the C++ library SymEngine, a fast C++ symbolic manipulation library.

Overview

SymEngine Python Wrappers

Python wrappers to the C++ library SymEngine, a fast C++ symbolic manipulation library.

Build Status Build status

Installation

Pip

See License section for information about wheels

pip install symengine --user

Conda package manager

conda install python-symengine -c symengine -c conda-forge

optionally, you may choose to install an early developer preview:

conda install python-symengine -c symengine/label/dev -c conda-forge

Build from source

Install prerequisites.

CMake       >= 2.8.12
Python3     >= 3.7
Cython      >= 0.29.24
SymEngine   >= 0.7.0

For SymEngine, only a specific commit/tag (see symengine_version.txt) is supported. Latest git master branch may not work as there may be breaking changes in SymEngine.

Python wrappers can be installed by,

python setup.py install

Additional options to setup.py are

python setup.py install build_ext
    --symengine-dir=/path/to/symengine/install/dir          # Path to SymEngine install directory or build directory
    --compiler=mingw32|msvc|cygwin                          # Select the compiler for Windows
    --generator=cmake-generator                             # CMake Generator
    --build-type=Release|Debug                              # Set build-type for multi-configuration generators like MSVC
    --define="var1=value1;var2=value2"                      # Give options to CMake
    --inplace                                               # Build the extension in source tree

Standard options to setup.py like --user, --prefix can be used to configure install location. NumPy is used if found by default, if you wish to make your choice of NumPy use explicit: then add e.g. WITH_NUMPY=False to --define.

Use SymEngine from Python as follows:

>> e = (x+y+z)**2 >>> e.expand() 2*x*y + 2*x*z + 2*y*z + x**2 + y**2 + z**2">
>>> from symengine import var
>>> var("x y z")
(x, y, z)
>>> e = (x+y+z)**2
>>> e.expand()
2*x*y + 2*x*z + 2*y*z + x**2 + y**2 + z**2

You can read Python tests in symengine/tests to see what features are implemented.

License

symengine.py is MIT licensed and uses several LGPL, BSD-3 and MIT licensed libraries

Licenses for the dependencies of pip wheels are as follows,

pip wheels on Unix use GMP (LGPL-3.0-or-later), MPFR (LGPL-3.0-or-later), MPC (LGPL-3.0-or-later), LLVM (Apache-2.0), zlib (Zlib) and symengine (MIT AND BSD-3-Clause). pip wheels on Windows use MPIR (LGPL-3.0-or-later) instead of GMP above and pthreads-win32 (LGPL-3.0-or-later) additionally. NumPy (BSD-3-Clause) and SymPy (BSD-3-Clause) are optional dependencies. Sources for these binary dependencies can be found on https://github.com/symengine/symengine-wheels/releases

Comments
  • Heterogeneous output in Lambdify

    Heterogeneous output in Lambdify

    To address #107.

    There are some test failures still. I'll update and ping once this is ready for review. I changed my mind and this now only returns a tuple if multiple expressions are given (e.g. a vector and a matrix). This means that this should be a non-breaking change.

    opened by bjodah 33
  • exposed llvm lambdify opt_level in python api

    exposed llvm lambdify opt_level in python api

    As requested by me in https://github.com/symengine/symengine/pull/1612#. Do you think it look good? @isuruf can you please merge https://github.com/isuruf/symengine/commit/ac7b9bb28cfaafffbf839be7a2a6424ecc2eaf9e as well?

    opened by ichumuh 19
  • Make a pre-release or backport

    Make a pre-release or backport

    Since this feature request was implemented, I migrated my modules JiTCODE, JiTCDDE, and JiTCSDE to from using SymPy to SymEngine for symbolics and C code printing. The outcome is truly awesome: Previously, the duration of the code-generation step was a major drawback of these modules. Now, it is sped up by a factor of up to nine hundred, making it negligible in most situations. (Thank you!)

    Except for overhauling the documentation and some unrelated changes, I am finished with the new versions. Therefore, I am confident that I have no further needs for changes to SymEngine. Now, when I release the new version, it would be great if my users didn’t have to bother with building and installing SymEngine and SymEngine.py by hand, but could pull it directly from PyPI as a requirement. Would it be possible to make a pre-release, new release, or similar including this commit to PyPI?

    opened by Wrzlprmft 16
  • [feature request] port build to setuptools

    [feature request] port build to setuptools

    Would be awesome if the package could be ported to setuptools as recommended by the Python packaging guide (https://packaging.python.org/guides/tool-recommendations/). This would allow installation with pip and also enable the creation of binary wheels for the major platforms (linux, win and mac).

    opened by cdiener 16
  • symengine.py does not correctly link to libpython

    symengine.py does not correctly link to libpython

    Placing a symlink to libpython in the cwd works around the problem.

    ~$ python -c "import symengine"
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "~/anaconda3/lib/python3.4/site-packages/symengine/__init__.py", line 1, in <module>
        from .lib.symengine_wrapper import (Symbol, Integer, sympify, SympifyError,
    ImportError: dlopen(~/anaconda3/lib/python3.4/site-packages/symengine/lib/symengine_wrapper.cpython-34m.so, 2): Library not loaded: libpython3.4m.dylib
      Referenced from: ~/anaconda3/lib/python3.4/site-packages/symengine/lib/symengine_wrapper.cpython-34m.so
      Reason: image not found
    

    Per comments here: http://stackoverflow.com/questions/26815537/opencv-3-0-0-alpha-with-python-3-failed-to-import-cv2

    ~$ otool -L ~/anaconda3/lib/python3.4/site-packages/symengine/lib/symengine_wrapper.cpython-34m.so 
    ~/anaconda3/lib/python3.4/site-packages/symengine/lib/symengine_wrapper.cpython-34m.so:
        libpython3.4m.dylib (compatibility version 3.4.0, current version 3.4.0)
        ~/opt/gmp/lib/libgmpxx.4.dylib (compatibility version 9.0.0, current version 9.0.0)
        ~/opt/gmp/lib/libgmp.10.dylib (compatibility version 13.0.0, current version 13.0.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
    
    opened by woodscn 16
  • [RFC] Add latex representation to DenseMatrix

    [RFC] Add latex representation to DenseMatrix

    • Add a _repr_latex_ method to the DenseMatrix class.
    • Add truncation for large matrices

    image

    Related to https://github.com/symengine/symengine/issues/1701

    opened by eendebakpt 11
  • Additions to symengine/sympy_compat.py

    Additions to symengine/sympy_compat.py

    Relevant: #136 @isuruf The constructor for Float is itself quite complex and many of the functionalities used are currently unavailable. I have commented the specific parts as of now. What should be done here?

    opened by ShikharJ 11
  • undefined symbol: _ZTIN4llvm11ObjectCacheE

    undefined symbol: _ZTIN4llvm11ObjectCacheE

    I've upgraded to the newest version (d9bc4a57da57181dff329e5fac2a4e7a384f0ee8) from sources and now symengine.py seems to be broken. I've tried deleted both symengine and symengine.py and tried the following to reinstall symengine.py but it didn't change anything. I didn't see any errors during the installation.

    git clone https://github.com/symengine/symengine.git
    git clone https://github.com/symengine/symengine.py.git
    cd symengine
    git checkout `cat ../symengine.py/symengine_version.txt`
    cmake -DWITH_LLVM:BOOL=ON .
    make
    sudo make install
    cd ../symengine.py
    sudo python setup.py install
    

    If I now try to simply create a symbol the following happens.

    $ python
    Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import symengine as sp
    >>> sp.Symbols('a')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'module' object has no attribute 'Symbols'
    

    And if I try the same in pycharm's console it tells me:

    import symengine as sp
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
        exec(code_obj, self.user_global_ns, self.user_ns)
      File "<ipython-input-2-4c25c92038d8>", line 1, in <module>
        import symengine as sp
      File "/home/stelter/pycharm-2017.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 20, in do_import
        module = self._system_import(name, *args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/symengine/__init__.py", line 1, in <module>
        from .lib.symengine_wrapper import (
      File "/home/stelter/pycharm-2017.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 20, in do_import
        module = self._system_import(name, *args, **kwargs)
    ImportError: /usr/local/lib/python2.7/dist-packages/symengine/lib/symengine_wrapper.so: undefined symbol: _ZTIN4llvm11ObjectCacheE
    

    I don't remember my previous symengine.py version. I only remembered that the symengine hash started with fff so I checked out 52ee6b8b14891fe42d82fb10cb705e37d70b1a4a on symengine.py and did the same stuff as above to install symengine.py and now it works again.

    Any ideas?

    opened by ichumuh 9
  • Symengine does not work anymore

    Symengine does not work anymore

    Hi,

    last week i was on Euroscipy 2017. So i installed various different kind of packages. Today i wanted to change some bits of my code, and suddenly symengine didn't work anymore.

    so i removed symengine, and then run

    conda install python-symengine -c symengine -c conda-forge

    i get

    running install
    running build
    running build_ext
    CMake Error at CMakeLists.txt:5 (find_package):
      Could not find a configuration file for package "SymEngine" that is
      compatible with requested version "0.3.0".
    
      The following configuration files were considered but not accepted:
    
        /usr/lib/cmake/symengine/SymEngineConfig.cmake, version: 0.2.0
        /usr/lib/cmake/symengine/SymEngineConfig.cmake, version: 0.2.0
    
    
    
    -- Configuring incomplete, errors occurred!
    See also "/home/mustafa/SymEngine/symengine.py/build/lib.linux-i686-3.6/CMakeFiles/CMakeOutput.log".
    error: error calling cmake
    mustafa@mustafa-Aspire-5749:~/SymEngine/symengine.py$ cd
    mustafa@mustafa-Aspire-5749:~$ conda install python-symengine -c symengine -c conda-forge
    Fetching package metadata .............
    
    PackageNotFoundError: Packages missing in current channels:
                
      - python-symengine
    
    We have searched for the packages in the following channels:
                
      - https://conda.anaconda.org/symengine/linux-32
      - https://conda.anaconda.org/symengine/noarch
      - https://conda.anaconda.org/conda-forge/linux-32
      - https://conda.anaconda.org/conda-forge/noarch
      - https://repo.continuum.io/pkgs/free/linux-32
      - https://repo.continuum.io/pkgs/free/noarch
      - https://repo.continuum.io/pkgs/r/linux-32
      - https://repo.continuum.io/pkgs/r/noarch
      - https://repo.continuum.io/pkgs/pro/linux-32
      - https://repo.continuum.io/pkgs/pro/noarch
                
    
    mustafa@mustafa-Aspire-5749:~$ pip3 install python3-symengine
    Collecting python3-symengine
      Could not find a version that satisfies the requirement python3-symengine (from versions: )
    No matching distribution found for python3-symengine
    
    

    I think that me having an old laptop with 32 bandwidth is the problem. I'm not that experienced, so help would be very much appreciated.

    opened by BlackTeaAndCoffee 9
  • Problems with Lambdify and heterogeneous output

    Problems with Lambdify and heterogeneous output

    Using a conda environment with python-symengine == 0.3 from symengine channel:

    >>> from symengine import symbols, Matrix, Lambdify
    >>> args = x, y = symbols('x y')
    >>> vec = Matrix([x+y, x*y])
    >>> jac = vec.jacobian(Matrix(args))
    >>> f = Lambdify(args, x**y, vec, jac)
    >>> f([2,3])
    [array([ 8.,  5.,  6.,  1.,  1.,  3.,  2.])]
    

    came up when looking into sympy/sympy#5642 I am investigating this now.

    opened by bjodah 9
  • conflict with other package yielding segmentation fault

    conflict with other package yielding segmentation fault

    on OSX 10.15.1, with this package: http://libroadrunner.org

    if I import symengine and then roadrunner, I get only the fault reported if I import roadrunner first, then symengine I get the following error

    Assertion failed: (!NextRegistered && "argument multiply registered!"), function addArgument, file /Users/phantom/etc/src/llvm-3.5.2/llvm-3.5.2.src/lib/Support/CommandLine.cpp, line 108.

    opened by Karrenbelt 8
  • Add boostmp to test matrix, also bump llvm version tested.

    Add boostmp to test matrix, also bump llvm version tested.

    When building symengine with boostmp, I get a test failure in symengine.py's test suite. This is due to integer division in boost's multiprecision library throws, and we never catch the c++ excpetion, leading to the exit of the CPython process. I suspect we need to pass a policy somewhere, but first I want to reproduce the error in our CI run.

    TODO:

    • [ ] fix our use of boost's mulitprecision integer so that it does not throw for division-by-zero.

    Stack trace:

    gdb backtrace
    tests/test_ntheory.py::test_divides                                                                      
    Thread 1 "python3" received signal SIGABRT, Aborted.                                                     
    __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737350246400) at ./nptl/pthread_kill.c:44  
    44      ./nptl/pthread_kill.c: No such file or directory.                                                
    (gdb) bt                                                                                                 
    #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737350246400) at ./nptl/pthread_kill.c:
    44                                                                                                       
    #1  __pthread_kill_internal (signo=6, threadid=140737350246400) at ./nptl/pthread_kill.c:78              
    #2  __GI___pthread_kill (threadid=140737350246400, signo=signo@entry=6) at ./nptl/pthread_kill.c:89      
    #3  0x00007ffff7c8d476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26                    
    #4  0x00007ffff7c737f3 in __GI_abort () at ./stdlib/abort.c:79                                           
    #5  0x00007ffff41eebbe in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6                                
    #6  0x00007ffff41fa24c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6                                
    #7  0x00007ffff41fa2b7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6                  
    #8  0x00007ffff41fa518 in __cxa_throw () from /lib/x86_64-linux-gnu/libstdc++.so.6                       
    #9  0x00007ffff4c905c4 in boost::throw_exception (e=..., loc=...) at /usr/include/bo
    ost/throw_exception.hpp:171                                                                              
    #10 0x00007ffff4caa75a in boost::multiprecision::backends::divide_unsigned_helper >, boost::multiprecision::backends::cpp_int_backend
    <0u, 0u, (boost::multiprecision::cpp_integer_type)1, (boost::multiprecision::cpp_int_check_type)0, std::a
    llocator > > (result=0x0, x=..., y=0, r=...) at /usr/include/boost/multiprecision/cpp
    _int/divide.hpp:339                                                                                      
    #11 0x00007ffff4c9fd3e in boost::multiprecision::backends::divide_unsigned_helper >, boost::multiprecision::backends::cpp_int_backend
    <0u, 0u, (boost::multiprecision::cpp_integer_type)1, (boost::multiprecision::cpp_int_check_type)0, std::a
    llocator >, boost::multiprecision::backends::cpp_int_backend<0u, 0u, (boost::multipre
    cision::cpp_integer_type)1, (boost::multiprecision::cpp_int_check_type)0, std::allocator > > (result=0x0, x=..., y=..., r=...) at /usr/include/boost/multiprecision/cpp_int/divide.hpp:73     
    #12 0x00007ffff4d7f2c0 in boost::multiprecision::backends::eval_modulus<0u, 0u, (boost::multiprecision::c
    pp_integer_type)1, (boost::multiprecision::cpp_int_check_type)0, std::allocator, 0u, 
    0u, (boost::multiprecision::cpp_integer_type)1, (boost::multiprecision::cpp_int_check_type)0, std::alloca
    tor, 0u, 0u, (boost::multiprecision::cpp_integer_type)1, (boost::multiprecision::cpp_
    int_check_type)0, std::allocator > (result=..., a=..., b=...) at /usr/include/boost/m
    ultiprecision/cpp_int/divide.hpp:532                                                                     
    #13 0x00007ffff4effcf4 in boost::multiprecision::operator% > > (a=..., b=...) at /usr/include/boost/multiprecision/detail/no_et_ops.h
    pp:176                                                                                                   
    #14 0x00007ffff4f97908 in SymEngine::mp_divisible_p (a=..., b=...) at //symengine-d21cfe1ed57168f2b4e0d5b
    e854632814387a3f1/symengine/mp_class.h:993                                                               
    #15 0x00007ffff4f88c44 in SymEngine::divides (a=..., b=...) at /symengine-d21cfe1ed57168f2b4e0d5be8546328
    14387a3f1/symengine/ntheory.cpp:163                                                                      
    #16 0x00007ffff570e5a7 in __pyx_pf_9symengine_3lib_17symengine_wrapper_138divides (__pyx_self=0x0, __pyx_
    v_a=0x7ffff78600d0, __pyx_v_b=0x7ffff78600d0) at /opt/symengine.py-74867351ed7ffb2f2e97f5807976b54953c0b7
    1d/build/lib.linux-x86_64-cpython-310/symengine/lib/symengine_wrapper.cpp:110638
    
    the exception being thrown
    #10 0x00007ffff4caa75a in boost::multiprecision::backends::divide_unsigned_helper >, boost::multiprecision::backends::cpp_int_backend<0u, 0u, (boost::multiprecision::cpp_integer_type)1, (boost::multiprecision::cpp_int_check_type)0, std::allocator > > (result=0x0, x=..., y=0, r=...) at /usr/include/boost/multiprecision/cpp_int/divide.hpp:339
    339           BOOST_THROW_EXCEPTION(std::overflow_error("Integer Division by zero."))
    
    opened by bjodah 0
  • subs compatibility with sympy

    subs compatibility with sympy

    The following snippet run with symengine instead of sympy gives an error because of the missing option simulteneous. Is this needed also in symengine?

        expression.subs(substitutions, simultaneous=True)
    
    E   TypeError: subs() got an unexpected keyword argument 'simultaneous'
    
    opened by rikardn 1
  • Debug build fails: The imported target

    Debug build fails: The imported target "teuchos" references the file "/usr/local/lib/libteuchos.a" but this file does not exist.

    CMake Error at /usr/local/lib/cmake/symengine/SymEngineTargets.cmake:82 (message):
      The imported target "teuchos" references the file
    
         "/usr/local/lib/libteuchos.a"
    
      but this file does not exist.  Possible reasons include:
    
      * The file was deleted, renamed, or moved to another location.
    
      * An install or uninstall procedure did not complete successfully.
    
      * The installation package was faulty and contained
    
         "/usr/local/lib/cmake/symengine/SymEngineTargets.cmake"
    
      but not all the files it references.
    
    Call Stack (most recent call first):
      /usr/local/lib/cmake/symengine/SymEngineConfig.cmake:49 (include)
      CMakeLists.txt:5 (find_package)
    

    Version: 0.9.2

    opened by yurivict 0
  • All tests fail with Attempt to free invalid pointer 0x82799f060: this is a suspected memory corruption problem

    All tests fail with Attempt to free invalid pointer 0x82799f060: this is a suspected memory corruption problem

    Failure:

    $ python3.9 test_arit.py
    src/tcmalloc.cc:333] Attempt to free invalid pointer 0x82799f060 
    Abort trap
    

    Stack trace:

    #0  thr_kill () at thr_kill.S:4
    #1  0x000000080072d104 in __raise (s=s@entry=6) at /disk-samsung/freebsd-src/lib/libc/gen/raise.c:52
    #2  0x00000008007dddc9 in abort () at /disk-samsung/freebsd-src/lib/libc/stdlib/abort.c:67
    #3  0x0000000805025591 in tcmalloc::Log(tcmalloc::LogMode, char const*, int, tcmalloc::LogItem, tcmalloc::LogItem, tcmalloc::LogItem, tcmalloc::LogItem) ()
       from /usr/local/lib/libtcmalloc.so.4
    #4  0x0000000805021b85 in ?? () from /usr/local/lib/libtcmalloc.so.4
    #5  0x00000008006668a0 in _thr_mutexattr_destroy (attr=0x7fffffffaba0) at /disk-samsung/freebsd-src/lib/libthr/thread/thr_mutexattr.c:180
    #6  0x00000008052de489 in std::__1::__libcpp_recursive_mutex_init (__m=<optimized out>) at /disk-samsung/freebsd-src/contrib/llvm-project/libcxx/include/__threading_support:268
    #7  std::__1::recursive_mutex::recursive_mutex (this=0x80414a140) at /disk-samsung/freebsd-src/contrib/llvm-project/libcxx/src/mutex.cpp:56
    #8  0x0000000802d95f2f in ?? () from /usr/local/lib/libsymengine.so.0.9
    #9  0x0000000802d7a744 in ?? () from /usr/local/lib/libsymengine.so.0.9
    #10 0x0000000802d7a6b5 in ?? () from /usr/local/lib/libsymengine.so.0.9
    #11 0x0000000802cb1d61 in ?? () from /usr/local/lib/libsymengine.so.0.9
    #12 0x0000000802ccc161 in ?? () from /usr/local/lib/libsymengine.so.0.9
    #13 0x000000080020e1bd in objlist_call_init (list=list@entry=0x7fffffffb610, lockstate=lockstate@entry=0x7fffffffb590) at /disk-samsung/freebsd-src/libexec/rtld-elf/rtld.c:3141
    #14 0x0000000800212966 in dlopen_object (name=name@entry=0x801850750 "/usr/local/lib/python3.9/site-packages/symengine/lib/symengine_wrapper.cpython-39.so", fd=fd@entry=-1,
        refobj=<optimized out>, lo_flags=<optimized out>, mode=mode@entry=2, lockstate=0x7fffffffb590, lockstate@entry=0x0) at /disk-samsung/freebsd-src/libexec/rtld-elf/rtld.c:3889
    #15 0x000000080020f1ae in rtld_dlopen (name=0x801850750 "/usr/local/lib/python3.9/site-packages/symengine/lib/symengine_wrapper.cpython-39.so", fd=-1, mode=<optimized out>)
        at /disk-samsung/freebsd-src/libexec/rtld-elf/rtld.c:3749
    #16 0x0000000800506b21 in ?? () from /usr/local/lib/libpython3.9.so.1.0
    #17 0x00000008004d1a6f in ?? () from /usr/local/lib/libpython3.9.so.1.0
    #18 0x00000008004d13b6 in ?? () from /usr/local/lib/libpython3.9.so.1.0
    #19 0x000000080040f457 in ?? () from /usr/local/lib/libpython3.9.so.1.0
    

    symengine.py-0.9.2 symengine-0.9.0 Python-3.9 clang-14 FreeBSD 13.1

    opened by yurivict 15
  • cmake error: string sub-command STRIP requires two arguments.

    cmake error: string sub-command STRIP requires two arguments.

    SymEngine_DIR : /usr/local/lib/cmake/symengine
    SymEngine Version : 0.9.0
    CMake Error at cmake/FindPython.cmake:7 (string):
      string sub-command STRIP requires two arguments.
    Call Stack (most recent call first):
      CMakeLists.txt:16 (find_package)
    
    opened by yurivict 2
Releases(v0.9.2)
  • v0.9.2(Mar 7, 2022)

  • v0.9.1(Feb 21, 2022)

  • v0.9.0(Feb 18, 2022)

    Breaking changes

    • python 3.6 is not supported anymore
    • Mul and Add of immutable and dense matrices gives immutable result - #374

    New functionality

    • Support pickling of Basic objects - #377
    • Add unicode function - #384
    • Add latex representation to DenseMatrix - #370

    Bug fixes

    • Use build_ext from setuptools - #388
    • Interval: API compatibility with sympy - #383
    • Fix leading underscore in converted dummy name by slicing - #375
    • Fix getting string representation of sage objects and fix tests - #373
    • Fix init_printing - #371
    • Fix a bug in converting C++ Dummy objects to Python - #369
    • Package missing files from cmake directory - #368

    People who contributed to the release:

    • Isuru Fernando
    • Pieter Eendebak
    • Rikard Nordgren
    • Ayush Kumar
    • Richard Otis
    Source code(tar.gz)
    Source code(zip)
    symengine.py-0.9.0.tar.gz(108.09 KB)
  • v0.8.1(Sep 9, 2021)

  • v0.7.1(Mar 24, 2021)

  • v0.7.0.post3(Mar 20, 2021)

  • v0.7.0.post2(Mar 17, 2021)

  • v0.7.0.post1(Mar 15, 2021)

  • v0.7.0(Mar 14, 2021)

    Breaking Changes

    • Python<3.6 support including Python 2 support was dropped
    • When building from source on Windows, MSVC dev environment has to be activated beforehand or CMAKE_GENERATOR has to be explicitly set
    • is_zero now returns None if the property cannot be determined instead of raising

    New Features

    • PyPy support
    • ppc64le, arm64 support
    • Added UnevaluatedExpr
    • Added support to pass a Basic object's C++ object pointer using pycapsules
    • Add new matrix methods elementwise_mul, conjugate and conjugate_transpose

    Bug Fixes

    • Workaround for DLL loading changes in python>=3.8. Set "SYMENGINE_PY_ADD_PATH_TO_SEARCH_DIRS" env variable if built from source on Windows.

    People who contributed to the release:

    • Isuru Fernando
    • Jialin Ma
    • Rikard Nordgren
    • Rohit Goswami
    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Mar 16, 2020)

    New Features:

    • LLVM Lambdify takes a dtype argument now - #309
    • Use xreplace from C++ instead of subs - #313

    People who contributed to the release:

    • Isuru Fernando
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Feb 11, 2020)

  • v0.5.1(Nov 3, 2019)

    Breaking Changes

    • python 3.4 support is dropped. (2.7 will be dropped in the next version)

    Bug Fixes:

    • Fixes for sympy compatibility
    • Added opt_level to Lambdify llvm backend.

    People who contributed to the release:

    • Simon Stelter
    • Björn Dahlgren
    • Isuru Fernando
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Sep 10, 2019)

    Dependencies

    • Updated symengine C++ library requirement to v0.5.0

    Bug Fixes

    • Fix converting large Integers to python ints - #289
    • Fix DeprecationWarning for MutableMapping import - #295

    New Features

    • as_ctypes function for Lambdify - #292
    • Make LambdaDouble and LLVMDouble cimport-able - #288
    • Add QR and Cholesky factorizations - #298

    People who contributed to the release:

    • Richard Otis
    • Isuru Fernando
    • Erik Jansson Agnvall
    • Björn Dahlgren
    • Connor Behan
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Apr 20, 2019)

    Breaking Changes

    • python 3.3 support is dropped. (3.4 is dropped in the next version)
    • out parameter of lambdify is keyword only - #171
    • evalf defaults to symbols domain - #263

    New Features

    • Common Subexpression Elimination - #193, #209
    • Generate SciPy LowLevelCallable from Lambdify - #201
    • Enable pickling for LLVMDouble class - #213
    • Latex printing on jupyter notebooks - #261
    • Relationals - #159
    • Dummy class - #172
    • Logic classes - #168
    • Wrap new special functions and constants - #162
    • as_numer_denom - #179
    • as_real_imag - #217
    • count_ops - #231
    • Singletons - #178
    • Added Expr class for sympy compat - #182
    • __div__ for matrices - #184
    • expand(deep=False) - #187
    • Support for order kwarg in Lambdify - #188
    • Add more attributes for sympy compat - #180
    • Convert BooleanAtom to bool - #195
    • Implement diff(ex, x, n) - #226
    • Add indexing matrix with an array - #229
    • Support __slots__ when subclassing Symbol - #243
    • Convert Basic to float - #265
    • xreplace for matrices - #282
    • Make constants return true for is_number - #283

    Bug Fixes

    • Fix lambdify for heterogenous outputs - #171
    • Fix testing when sympy is not installed - #175
    • Fix DenseMatrix.atoms - #191
    • Fix slicing in matrices - #254

    Contributors for this release are,

    • Shikhar Jaiswal
    • Isuru Fernando
    • Björn Dahlgren
    • Ondřej Čertík
    • Nilay Pochhi
    • Alan Hu
    • xoviat
    • Jean-Christophe Fillion-Robin
    • Moritz E. Beber
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Jul 2, 2017)

    Major changes

    • This release adds a dependency on NumPy for Lambdify functionality.
    • Needs symengine v0.3.0
    • symengine.sympy_compat is deprecated and symengine provides all the functionality that sympy_compat did.

    New functionality

    • New methods, Min, Max
    • oo, zoo, nan support
    • CCodePrinter and ccode for printing C code.
    • Support bdist_wheel
    • Ability to subclass Symbol
    • Simulate sympy.functions with symengine.functions
    • ATan2 and support all hyperbolic, inverse hyperblic functions.
    • sympify now parses strings and all functions take in a string and parses it.
    • Float class that works similar to sympy.Float
    • series method now returns symengine objects by default.
    • Lambdify can now output multiple objects.

    Contributors for this release

    • @isuruf
    • @certik
    • @bjodah
    • @mattwala
    • @ShikharJ
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0.rc0(Jun 25, 2017)

    Major changes

    • This release adds a dependency on NumPy for Lambdify functionality.
    • Needs symengine v0.3.0
    • symengine.sympy_compat is deprecated and symengine provides all the functionality that sympy_compat did.

    New functionality

    • New methods, Min, Max
    • oo, zoo, nan support
    • CCodePrinter and ccode for printing C code.
    • Support bdist_wheel
    • Ability to subclass Symbol
    • Simulate sympy.functions with symengine.functions
    • ATan2 and support all hyperbolic, inverse hyperblic functions.
    • sympify now parses strings and all functions take in a string and parses it.
    • Float class that works similar to sympy.Float
    • series method now returns symengine objects by default.
    • Lambdify can now output multiple objects.

    Contributors for this release

    • @isuruf
    • @certik
    • @bjodah
    • @mattwala
    • @ShikharJ
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Sep 26, 2016)

Owner
SymEngine is a fast symbolic manipulation library, written in C++
null
Home repository for the Regularized Greedy Forest (RGF) library. It includes original implementation from the paper and multithreaded one written in C++, along with various language-specific wrappers.

Regularized Greedy Forest Regularized Greedy Forest (RGF) is a tree ensemble machine learning method described in this paper. RGF can deliver better r

RGF-team 364 Dec 28, 2022
OptaPlanner wrappers for Python. Currently significantly slower than OptaPlanner in Java or Kotlin.

OptaPy is an AI constraint solver for Python to optimize the Vehicle Routing Problem, Employee Rostering, Maintenance Scheduling, Task Assignment, School Timetabling, Cloud Optimization, Conference Scheduling, Job Shop Scheduling, Bin Packing and many more planning problems.

OptaPy 211 Jan 2, 2023
Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation.

============================================================================================================ `MILA will stop developing Theano <https:

null 9.6k Dec 31, 2022
Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation.

============================================================================================================ `MILA will stop developing Theano <https:

null 9.6k Jan 6, 2023
Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation.

============================================================================================================ `MILA will stop developing Theano <https:

null 9.3k Feb 12, 2021
SigOpt wrappers for scikit-learn methods

SigOpt + scikit-learn Interfacing This package implements useful interfaces and wrappers for using SigOpt and scikit-learn together Getting Started In

SigOpt 73 Sep 30, 2022
ATOMIC 2020: On Symbolic and Neural Commonsense Knowledge Graphs

(Comet-) ATOMIC 2020: On Symbolic and Neural Commonsense Knowledge Graphs Paper Jena D. Hwang, Chandra Bhagavatula, Ronan Le Bras, Jeff Da, Keisuke Sa

AI2 152 Dec 27, 2022
PIGLeT: Language Grounding Through Neuro-Symbolic Interaction in a 3D World [ACL 2021]

piglet PIGLeT: Language Grounding Through Neuro-Symbolic Interaction in a 3D World [ACL 2021] This repo contains code and data for PIGLeT. If you like

Rowan Zellers 51 Oct 8, 2022
Symbolic Parallel Adaptive Importance Sampling for Probabilistic Program Analysis in JAX

SYMPAIS: Symbolic Parallel Adaptive Importance Sampling for Probabilistic Program Analysis Overview | Installation | Documentation | Examples | Notebo

Yicheng Luo 4 Sep 13, 2022
Official repository for the paper, MidiBERT-Piano: Large-scale Pre-training for Symbolic Music Understanding.

MidiBERT-Piano Authors: Yi-Hui (Sophia) Chou, I-Chun (Bronwin) Chen Introduction This is the official repository for the paper, MidiBERT-Piano: Large-

null 137 Dec 15, 2022
Source code and Dataset creation for the paper "Neural Symbolic Regression That Scales"

NeuralSymbolicRegressionThatScales Pytorch implementation and pretrained models for the paper "Neural Symbolic Regression That Scales", presented at I

null 35 Nov 25, 2022
Data and Code for ACL 2021 Paper "Inter-GPS: Interpretable Geometry Problem Solving with Formal Language and Symbolic Reasoning"

Introduction Code and data for ACL 2021 Paper "Inter-GPS: Interpretable Geometry Problem Solving with Formal Language and Symbolic Reasoning". We cons

Pan Lu 81 Dec 27, 2022
PyBullet CartPole and Quadrotor environments—with CasADi symbolic a priori dynamics—for learning-based control and reinforcement learning

safe-control-gym Physics-based CartPole and Quadrotor Gym environments (using PyBullet) with symbolic a priori dynamics (using CasADi) for learning-ba

Dynamic Systems Lab 300 Dec 28, 2022
Angora is a mutation-based fuzzer. The main goal of Angora is to increase branch coverage by solving path constraints without symbolic execution.

Angora Angora is a mutation-based coverage guided fuzzer. The main goal of Angora is to increase branch coverage by solving path constraints without s

null 833 Jan 7, 2023
Driller: augmenting AFL with symbolic execution!

Driller Driller is an implementation of the driller paper. This implementation was built on top of AFL with angr being used as a symbolic tracer. Dril

Shellphish 791 Jan 6, 2023
PyTorch implementation of the paper:A Convolutional Approach to Melody Line Identification in Symbolic Scores.

Symbolic Melody Identification This repository is an unofficial PyTorch implementation of the paper:A Convolutional Approach to Melody Line Identifica

Sophia Y. Chou 3 Feb 21, 2022
PyTorch implementation for the Neuro-Symbolic Sudoku Solver leveraging the power of Neural Logic Machines (NLM)

Neuro-Symbolic Sudoku Solver PyTorch implementation for the Neuro-Symbolic Sudoku Solver leveraging the power of Neural Logic Machines (NLM). Please n

Ashutosh Hathidara 60 Dec 10, 2022
Relaxed-machines - explorations in neuro-symbolic differentiable interpreters

Relaxed Machines Explorations in neuro-symbolic differentiable interpreters. Baby steps: inc_stop Libraries JAX Haiku Optax Resources Chapter 3 (∂4: A

Nada Amin 6 Feb 2, 2022