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++
git《Self-Attention Attribution: Interpreting Information Interactions Inside Transformer》(AAAI 2021) GitHub:

Self-Attention Attribution This repository contains the implementation for AAAI-2021 paper Self-Attention Attribution: Interpreting Information Intera

60 Dec 29, 2022
PlenOctree Extraction algorithm

PlenOctrees_NeRF-SH This is an implementation of the Paper PlenOctrees for Real-time Rendering of Neural Radiance Fields. Not only the code provides t

49 Nov 05, 2022
Continuous Conditional Random Field Convolution for Point Cloud Segmentation

CRFConv This repository is the implementation of "Continuous Conditional Random Field Convolution for Point Cloud Segmentation" 1. Setup 1) Building c

Fei Yang 8 Dec 08, 2022
MAVE: : A Product Dataset for Multi-source Attribute Value Extraction

The dataset contains 3 million attribute-value annotations across 1257 unique categories on 2.2 million cleaned Amazon product profiles. It is a large, multi-sourced, diverse dataset for product attr

Google Research Datasets 89 Jan 08, 2023
Implementation for paper MLP-Mixer: An all-MLP Architecture for Vision

MLP Mixer Implementation for paper MLP-Mixer: An all-MLP Architecture for Vision. Give us a star if you like this repo. Author: Github: bangoc123 Emai

Ngoc Nguyen Ba 86 Dec 10, 2022
PyTorch version of the paper 'Enhanced Deep Residual Networks for Single Image Super-Resolution' (CVPRW 2017)

About PyTorch 1.2.0 Now the master branch supports PyTorch 1.2.0 by default. Due to the serious version problem (especially torch.utils.data.dataloade

Sanghyun Son 2.1k Jan 01, 2023
Pytorch implementation for M^3L

Learning to Generalize Unseen Domains via Memory-based Multi-Source Meta-Learning for Person Re-Identification (CVPR 2021) Introduction This is the Py

Yuyang Zhao 45 Dec 26, 2022
DLL: Direct Lidar Localization

DLL: Direct Lidar Localization Summary This package presents DLL, a direct map-based localization technique using 3D LIDAR for its application to aeri

Service Robotics Lab 127 Dec 16, 2022
Safe Policy Optimization with Local Features

Safe Policy Optimization with Local Feature (SPO-LF) This is the source-code for implementing the algorithms in the paper "Safe Policy Optimization wi

Akifumi Wachi 6 Jun 05, 2022
RODD: A Self-Supervised Approach for Robust Out-of-Distribution Detection

RODD Official Implementation of 2022 CVPRW Paper RODD: A Self-Supervised Approach for Robust Out-of-Distribution Detection Introduction: Recent studie

Umar Khalid 17 Oct 11, 2022
IndoNLI: A Natural Language Inference Dataset for Indonesian

IndoNLI: A Natural Language Inference Dataset for Indonesian This is a repository for data and code accompanying our EMNLP 2021 paper "IndoNLI: A Natu

15 Feb 10, 2022
A Python Package for Portfolio Optimization using the Critical Line Algorithm

PyCLA A Python Package for Portfolio Optimization using the Critical Line Algorithm Getting started To use PyCLA, clone the repo and install the requi

19 Oct 11, 2022
A minimal TPU compatible Jax implementation of NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

NeRF Minimal Jax implementation of NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis. Result of Tiny-NeRF RGB Depth

Soumik Rakshit 11 Jul 24, 2022
HDR Video Reconstruction: A Coarse-to-fine Network and A Real-world Benchmark Dataset (ICCV 2021)

Code for HDR Video Reconstruction HDR Video Reconstruction: A Coarse-to-fine Network and A Real-world Benchmark Dataset (ICCV 2021) Guanying Chen, Cha

Guanying Chen 64 Nov 19, 2022
Robotics environments

Robotics environments Details and documentation on these robotics environments are available in OpenAI's blog post and the accompanying technical repo

Farama Foundation 121 Dec 28, 2022
TimeSHAP explains Recurrent Neural Network predictions.

TimeSHAP TimeSHAP is a model-agnostic, recurrent explainer that builds upon KernelSHAP and extends it to the sequential domain. TimeSHAP computes even

Feedzai 90 Dec 18, 2022
Implements Gradient Centralization and allows it to use as a Python package in TensorFlow

Gradient Centralization TensorFlow This Python package implements Gradient Centralization in TensorFlow, a simple and effective optimization technique

Rishit Dagli 101 Nov 01, 2022
Implementation of the paper "Fine-Tuning Transformers: Vocabulary Transfer"

Transformer-vocabulary-transfer Implementation of the paper "Fine-Tuning Transfo

LEYA 13 Nov 30, 2022
Official code for MPG2: Multi-attribute Pizza Generator: Cross-domain Attribute Control with Conditional StyleGAN

This is the official code for Multi-attribute Pizza Generator (MPG2): Cross-domain Attribute Control with Conditional StyleGAN. Paper Demo Setup Envir

Fangda Han 5 Sep 01, 2022
Unofficial implementation of Perceiver IO: A General Architecture for Structured Inputs & Outputs

Perceiver IO Unofficial implementation of Perceiver IO: A General Architecture for Structured Inputs & Outputs Usage import torch from src.perceiver.

Timur Ganiev 111 Nov 15, 2022