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
    [email protected]:~/SymEngine/symengine.py$ cd
    [email protected]:~$ 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
                
    
    [email protected]:~$ 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, [email protected]=6) at ./nptl/pthread_kill.c:89      
    #3  0x00007ffff7c8d476 in __GI_raise ([email protected]=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 ([email protected]=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 ([email protected]=0x7fffffffb610, [email protected]=0x7fffffffb590) at /disk-samsung/freebsd-src/libexec/rtld-elf/rtld.c:3141
    #14 0x0000000800212966 in dlopen_object ([email protected]=0x801850750 "/usr/local/lib/python3.9/site-packages/symengine/lib/symengine_wrapper.cpython-39.so", [email protected]=-1,
        refobj=<optimized out>, lo_flags=<optimized out>, [email protected]=2, lockstate=0x7fffffffb590, [email protected]=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++
Official pytorch implementation for Learning to Listen: Modeling Non-Deterministic Dyadic Facial Motion (CVPR 2022)

Learning to Listen: Modeling Non-Deterministic Dyadic Facial Motion This repository contains a pytorch implementation of "Learning to Listen: Modeling

50 Dec 17, 2022
Hide screen when boss is approaching.

BossSensor Hide your screen when your boss is approaching. Demo The boss stands up. He is approaching. When he is approaching, the program fetches fac

Hiroki Nakayama 6.2k Jan 07, 2023
codebase for "A Theory of the Inductive Bias and Generalization of Kernel Regression and Wide Neural Networks"

Eigenlearning This repo contains code for replicating the experiments of the paper A Theory of the Inductive Bias and Generalization of Kernel Regress

Jamie Simon 45 Dec 02, 2022
🔥 Cannlytics-powered artificial intelligence 🤖

Cannlytics AI 🔥 Cannlytics-powered artificial intelligence 🤖 🏗️ Installation 🏃‍♀️ Quickstart 🧱 Development 🦾 Automation 💸 Support 🏛️ License ?

Cannlytics 3 Nov 11, 2022
The UI as a mobile display for OP25

OP25 Mobile Control Head A 'remote' control head that interfaces with an OP25 instance. We take advantage of some data end-points left exposed for the

Sarah Rose Giddings 13 Dec 28, 2022
Quadruped-command-tracking-controller - Quadruped command tracking controller (flat terrain)

Quadruped command tracking controller (flat terrain) Prepare Install RAISIM link

Yunho Kim 4 Oct 20, 2022
"Neural Turing Machine" in Tensorflow

Neural Turing Machine in Tensorflow Tensorflow implementation of Neural Turing Machine. This implementation uses an LSTM controller. NTM models with m

Taehoon Kim 1k Dec 06, 2022
This repo is a PyTorch implementation for Paper "Unsupervised Learning for Cuboid Shape Abstraction via Joint Segmentation from Point Clouds"

Unsupervised Learning for Cuboid Shape Abstraction via Joint Segmentation from Point Clouds This repository is a PyTorch implementation for paper: Uns

Kaizhi Yang 42 Dec 09, 2022
Reducing Information Bottleneck for Weakly Supervised Semantic Segmentation (NeurIPS 2021)

Reducing Information Bottleneck for Weakly Supervised Semantic Segmentation (NeurIPS 2021) The implementation of Reducing Infromation Bottleneck for W

Jungbeom Lee 81 Dec 16, 2022
Kaggle: Cell Instance Segmentation

Kaggle: Cell Instance Segmentation The goal of this challenge is to detect cells in microscope images. with simple view on how many cels have been ann

Jirka Borovec 9 Aug 12, 2022
Official Implementation of "DialogLM: Pre-trained Model for Long Dialogue Understanding and Summarization."

DialogLM Code for AAAI 2022 paper: DialogLM: Pre-trained Model for Long Dialogue Understanding and Summarization. Pre-trained Models We release two ve

Microsoft 92 Dec 19, 2022
Deep learning model for EEG artifact removal

DeepSeparator Introduction Electroencephalogram (EEG) recordings are often contaminated with artifacts. Various methods have been developed to elimina

23 Dec 21, 2022
CONditionals for Ordinal Regression and classification in tensorflow

Condor Ordinal regression in Tensorflow Keras Tensorflow Keras implementation of CONDOR Ordinal Regression (aka ordinal classification) by Garrett Jen

9 Jul 31, 2022
LIVECell - A large-scale dataset for label-free live cell segmentation

LIVECell dataset This document contains instructions of how to access the data associated with the submitted manuscript "LIVECell - A large-scale data

Sartorius Corporate Research 112 Jan 07, 2023
[CVPR 2021] Region-aware Adaptive Instance Normalization for Image Harmonization

RainNet — Official Pytorch Implementation Region-aware Adaptive Instance Normalization for Image Harmonization Jun Ling, Han Xue, Li Song*, Rong Xie,

130 Dec 11, 2022
This is the repository of the NeurIPS 2021 paper "Curriculum Disentangled Recommendation withNoisy Multi-feedback"

Curriculum_disentangled_recommendation This is the repository of the NeurIPS 2021 paper "Curriculum Disentangled Recommendation with Noisy Multi-feedb

14 Dec 20, 2022
Code reproduce for paper "Vehicle Re-identification with Viewpoint-aware Metric Learning"

VANET Code reproduce for paper "Vehicle Re-identification with Viewpoint-aware Metric Learning" Introduction This is the implementation of article VAN

EMDATA-AILAB 23 Dec 26, 2022
OpenABC-D: A Large-Scale Dataset For Machine Learning Guided Integrated Circuit Synthesis

OpenABC-D: A Large-Scale Dataset For Machine Learning Guided Integrated Circuit Synthesis Overview OpenABC-D is a large-scale labeled dataset generate

NYU Machine-Learning guided Design Automation (MLDA) 31 Nov 22, 2022
Zen-NAS: A Zero-Shot NAS for High-Performance Deep Image Recognition

Zen-NAS: A Zero-Shot NAS for High-Performance Deep Image Recognition How Fast Compare to Other Zero-Shot NAS Proxies on CIFAR-10/100 Pre-trained Model

190 Dec 29, 2022
《Unsupervised 3D Human Pose Representation with Viewpoint and Pose Disentanglement》(ECCV 2020) GitHub: [fig9]

Unsupervised 3D Human Pose Representation [Paper] The implementation of our paper Unsupervised 3D Human Pose Representation with Viewpoint and Pose Di

42 Nov 24, 2022