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++
Code and results accompanying our paper titled Mixture Proportion Estimation and PU Learning: A Modern Approach at Neurips 2021 (Spotlight)

Mixture Proportion Estimation and PU Learning: A Modern Approach This repository is the official implementation of Mixture Proportion Estimation and P

Approximately Correct Machine Intelligence (ACMI) Lab 23 Dec 28, 2022
Deep Dual Consecutive Network for Human Pose Estimation (CVPR2021)

Beanie - is an asynchronous ODM for MongoDB, based on Motor and Pydantic. It uses an abstraction over Pydantic models and Motor collections to work wi

295 Dec 29, 2022
Federated learning on graph, especially on graph neural networks (GNNs), knowledge graph, and private GNN.

Federated learning on graph, especially on graph neural networks (GNNs), knowledge graph, and private GNN.

keven 198 Dec 20, 2022
some academic posters as references. May we have in-person poster session soon!

some academic posters as references. May we have in-person poster session soon!

Bolei Zhou 472 Jan 06, 2023
The Rich Get Richer: Disparate Impact of Semi-Supervised Learning

The Rich Get Richer: Disparate Impact of Semi-Supervised Learning Preprocess file of the dataset used in implicit sub-populations: (Demographic groups

<a href=[email protected]"> 4 Oct 14, 2022
Detecting Potentially Harmful and Protective Suicide-related Content on Twitter

TwitterSuicideML Scripts for reproducing the Machine Learning analysis of the paper: Detecting Potentially Harmful and Protective Suicide-related Cont

3 Oct 17, 2022
Code for reproducing our analysis in the paper titled: Image Cropping on Twitter: Fairness Metrics, their Limitations, and the Importance of Representation, Design, and Agency

Image Crop Analysis This is a repo for the code used for reproducing our Image Crop Analysis paper as shared on our blog post. If you plan to use this

Twitter Research 239 Jan 02, 2023
Deep generative modeling for time-stamped heterogeneous data, enabling high-fidelity models for a large variety of spatio-temporal domains.

Neural Spatio-Temporal Point Processes [arxiv] Ricky T. Q. Chen, Brandon Amos, Maximilian Nickel Abstract. We propose a new class of parameterizations

Facebook Research 75 Dec 19, 2022
LETR: Line Segment Detection Using Transformers without Edges

LETR: Line Segment Detection Using Transformers without Edges Introduction This repository contains the official code and pretrained models for Line S

mlpc-ucsd 157 Jan 06, 2023
Information-Theoretic Multi-Objective Bayesian Optimization with Continuous Approximations

Information-Theoretic Multi-Objective Bayesian Optimization with Continuous Approximations Requirements The code is implemented in Python and requires

1 Nov 03, 2021
PyTorch implementation of ENet

PyTorch-ENet PyTorch (v1.1.0) implementation of ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation, ported from the lua-torc

David Silva 333 Dec 29, 2022
[CVPR 2021] Monocular depth estimation using wavelets for efficiency

Single Image Depth Prediction with Wavelet Decomposition Michaël Ramamonjisoa, Michael Firman, Jamie Watson, Vincent Lepetit and Daniyar Turmukhambeto

Niantic Labs 205 Jan 02, 2023
A motion detection system with RaspberryPi, OpenCV, Python

Human Detection System using Raspberry Pi Functionality Activates a relay on detecting motion. You may need following components to get the expected R

Omal Perera 55 Dec 04, 2022
Hierarchical Motion Encoder-Decoder Network for Trajectory Forecasting (HMNet)

Hierarchical Motion Encoder-Decoder Network for Trajectory Forecasting (HMNet) Our paper: https://arxiv.org/abs/2111.13324 We will release the complet

15 Oct 17, 2022
Using Streamlit to host a multi-page tool with model specs and classification metrics, while also accepting user input values for prediction.

Predicitng_viability Using Streamlit to host a multi-page tool with model specs and classification metrics, while also accepting user input values for

Gopalika Sharma 1 Nov 08, 2021
Supervised & unsupervised machine-learning techniques are applied to the database of weighted P4s which admit Calabi-Yau hypersurfaces.

Weighted Projective Spaces ML Description: The database of 5-vectors describing 4d weighted projective spaces which admit Calabi-Yau hypersurfaces are

Ed Hirst 3 Sep 08, 2022
Repositório da disciplina de APC, no segundo semestre de 2021

NOTAS FINAIS: https://github.com/fabiommendes/apc2018/blob/master/nota-final.pdf Algoritmos e Programação de Computadores Este é o Git da disciplina A

16 Dec 16, 2022
Learning hierarchical attention for weakly-supervised chest X-ray abnormality localization and diagnosis

Hierarchical Attention Mining (HAM) for weakly-supervised abnormality localization This is the official PyTorch implementation for the HAM method. Pap

Xi Ouyang 22 Jan 02, 2023
A Free and Open Source Python Library for Multiobjective Optimization

Platypus What is Platypus? Platypus is a framework for evolutionary computing in Python with a focus on multiobjective evolutionary algorithms (MOEAs)

Project Platypus 424 Dec 18, 2022
Facial recognition project

Facial recognition project documentation Project introduction This project is developed by linuxu. It is a face model recognition project developed ba

Jefferson 2 Dec 04, 2022