Skip to content
Julia wrappers of SymEngine
Julia
Branch: master
Clone or download

Latest commit

2
Latest commit ddf9e2f May 10, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Update TagBot.yml Feb 9, 2020
src Fix warnings and re-enable tests Apr 28, 2020
test Fix warnings and re-enable tests Apr 28, 2020
.gitignore Fix warnings Aug 9, 2018
.travis.yml Require julia 1.3 and use new jll package Dec 12, 2019
LICENSE [skip ci] Update License May 10, 2017
Project.toml Support RecipesBase 1.0 May 10, 2020
README.md Update README.md Apr 13, 2020
appveyor.yml Require julia 1.3 and use new jll package Dec 12, 2019

README.md

SymEngine.jl

Build Status Build status

SymEngine SymEngine

Julia Wrappers for SymEngine, a fast symbolic manipulation library, written in C++.

Installation

You can install SymEngine.jl by giving the following command.

julia> Pkg.add("SymEngine")

Quick Start

Working with scalar variables

Defining variables

One can define variables in a few ways. The following three examples are equivalent.

Defining two symbolic variables with the names a and b, and assigning them to julia variables with the same name.

julia> a=symbols(:a); b=symbols(:b)
b

julia> a,b = symbols("a b")
(a, b)

julia> @vars a b
(a, b)

Simple expressions

We are going to define an expression using the variables from earlier:

julia> ex1 = a + 2(b+2)^2 + 2a + 3(a+1)
3*a + 3*(1 + a) + 2*(2 + b)^2

One can see that values are grouped, but no expansion is done.

Working with vector and matrix variables

Defining vectors of variables

A vector of variables can be defined using list comprehension and string interpolation.

julia> [symbols("α_$i") for i in 1:3]
3-element Array{SymEngine.Basic,1}:
 α_1
 α_2
 α_3

Defining matrices of variables

Some times one might want to define a matrix of variables. One can use a matrix comprehension, and string interpolation to create a matrix of variables.

julia> W = [symbols("W_$i$j") for i in 1:3, j in 1:4]
3×4 Array{Basic,2}:
 W_11  W_12  W_13  W_14
 W_21  W_22  W_23  W_24
 W_31  W_32  W_33  W_34

Matrix-vector multiplication

Now using the matrix we can perform matrix operations:

julia> W*[1.0, 2.0, 3.0, 4.0]
3-element Array{Basic,1}:
 1.0*W_11 + 2.0*W_12 + 3.0*W_13 + 4.0*W_14
 1.0*W_21 + 2.0*W_22 + 3.0*W_23 + 4.0*W_24
 1.0*W_31 + 2.0*W_32 + 3.0*W_33 + 4.0*W_34

Operations

expand

julia> expand(a + 2(b+2)^2 + 2a + 3(a+1))
11 + 6*a + 8*b + 2*b^2

subs

Performs subsitution.

julia> subs(a^2+(b-2)^2, b=>a)
a^2 + (-2 + a)^2

julia> subs(a^2+(b-2)^2, b=>2)
a^2

julia> subs(a^2+(b-2)^2, a=>2)
4 + (-2 + b)^2

julia> subs(a^2+(b-2)^2, a^2=>2)
2 + (-2 + b)^2

julia> subs(a^2+(b-2)^2, a=>2, b=>3)
5

diff

Peforms differentiation

julia> diff(a + 2(b+2)^2 + 2a + 3(a+1), b)
4*(2 + b)

License

SymEngine.jl is licensed under MIT open source license.

You can’t perform that action at this time.