Skip to main content

Community-enhanced version of Symbolica: a blazing fast computer algebra system

Project description


logo

Symbolica website Zulip Chat Symbolica website Codecov

Symbolica ⊆ Modern Computer Algebra

Symbolica is a blazing fast computer algebra system for Python and Rust, born of a need to push the boundaries of computations in science and enterprise. Check out the live Jupyter Notebook demo!

For documentation and more, see symbolica.io.

Quick Example

Symbolica allows you to build and manipulate mathematical expressions, for example from a Jupyter Notebook:

A demo of Symbolica

You are able to perform these operations from the comfort of a programming language that you (probably) already know, by using Symbolica's bindings to Python and Rust:

A demo of Symbolica

Installation

Symbolica can be installed for Python >3.5 using pip:

pip install symbolica

Visit the Get Started page for detailed installation instructions.

Examples

Below we list some examples of the features of Symbolica. Check the guide for a complete overview.

Pattern matching

Variables ending with a _ are wildcards that match to any subexpression. In the following example we try to match the pattern f(w1_,w2_):

from symbolica import *
x, y, w1_, w2_, f = S('x','y','w1_','w2_', 'f')
e = f(3,x)*y**2+5
r = e.replace_all(f(w1_,w2_), f(w1_ - 1, w2_**2))
print(r)

which yields y^2*f(2,x^2)+5.

Solving a linear system

Solve a linear system in x and y with a parameter c:

from symbolica import *

x, y, c, f = S('x', 'y', 'c', 'f')

x_r, y_r = Expression.solve_linear_system(
    [f(c)*x + y + c, y + c**2], [x, y])
print('x =', x_r, ', y =', y_r)

which yields x = (-c+c^2)*f(c)^-1 and y = -c^2.

Series expansion

Perform a series expansion in x:

from symbolica import *
e = E('exp(5+x)/(1-x)').series(S('x'), 0, 3)

print(e)

which yields (exp(5))+(2*exp(5))*x+(5/2*exp(5))*x^2+(8/3*exp(5))*x^3+𝒪(x^4).

Rational arithmetic

Symbolica is world-class in rational arithmetic, outperforming Mathematica, Maple, Form, Fermat, and other computer algebra packages. Simply convert an expression to a rational polynomial:

from symbolica import *
p = E('(x*y^2*5+5)^2/(2*x+5)+(x+4)/(6*x^2+1)').to_rational_polynomial()
print(p)

which yields (45+13*x+50*x*y^2+152*x^2+25*x^2*y^4+300*x^3*y^2+150*x^4*y^4)/(5+2*x+30*x^2+12*x^3).

Community packages

The PyPi version of Symbolica ships with the following community packages:

  • spenso: perform tensor network computations
  • idenso: perform Dirac and color algebra
  • vakint: compute massive vacuum bubbles

They can be accessed through:

import symbolica.community.spenso

Example use can be found here.

Development

Follow the development and discussions on Zulip!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symbolica-2.0.0.tar.gz (126.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

symbolica-2.0.0-cp37-abi3-win_amd64.whl (30.0 MB view details)

Uploaded CPython 3.7+Windows x86-64

symbolica-2.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.3 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ x86-64

symbolica-2.0.0-cp37-abi3-macosx_11_0_arm64.whl (24.3 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

symbolica-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl (26.6 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

Details for the file symbolica-2.0.0.tar.gz.

File metadata

  • Download URL: symbolica-2.0.0.tar.gz
  • Upload date:
  • Size: 126.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for symbolica-2.0.0.tar.gz
Algorithm Hash digest
SHA256 bdb1623b18418eb3fd5b4e0774993b9318b49490bb9cbdac4832e83810a8eb47
MD5 10be150d6ca9deca051f140cab1ecdfc
BLAKE2b-256 b95f4d8a8207741883da2ce334e8eb618ec1e05ea5e3b5ee45d78fc120e4d95a

See more details on using hashes here.

File details

Details for the file symbolica-2.0.0-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: symbolica-2.0.0-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 30.0 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for symbolica-2.0.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8cdc660a817cd63231bf4a3714e3c5cea73afef6613c7f34eafb3d26489d2c9c
MD5 38a5a2da0d4c23becabc1ff5c3cdcfb6
BLAKE2b-256 1f9db02f2eec6c2493a8097596cd4ae35e7568b34e93c20b87ba29401a73fd69

See more details on using hashes here.

File details

Details for the file symbolica-2.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for symbolica-2.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f278050a40fcaf58176337c9528f00b24bbd940308798b2acdf8b026f32630e
MD5 3106dae0098a4ec419c18d76207038d1
BLAKE2b-256 f319f804044401c5bbbdd3aa62e015cc4af881a39f85c7d4016f0ae540aedcbb

See more details on using hashes here.

File details

Details for the file symbolica-2.0.0-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for symbolica-2.0.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d63d483a6c5785546047aa7d40b43a8a34ef39fc4fa4eb2bae398710bab5f4e2
MD5 798e9fd8abf5bb65e5f280a0955a5d1f
BLAKE2b-256 a0d125db2ac76d2cffc9d491031a587be94f78b2cef176369f7cb65dc211b46d

See more details on using hashes here.

File details

Details for the file symbolica-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for symbolica-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5e436284b47779f21fff9c9033de09059aa30a92df15264c9c0295340ea2f396
MD5 c9dc2265da8e8ccc35457206b9f05b9c
BLAKE2b-256 961218a721d2d0ad0224a55849c6f1a03ab2b4de26ae6846ca00d4b8b45df1a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page