These are chat archives for symengine/symengine

19th
Nov 2016
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:16
Does the SymEngine C++ code implement a matrix exponential at all?
I know that SymPy had one
Isuru Fernando
@isuruf
Nov 19 2016 03:16
No. what is the sympy one?
I mean what is the sympy name for it?
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:16
In SymPy.jl it's `exp`
looks like it's `expm`
Isuru Fernando
@isuruf
Nov 19 2016 03:18
Those are numeric algorithms, I'm searching for a symbolic one
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:18
ahh
Is it a sin to say that I know Mathematica can do it? :worried:
Isuru Fernando
@isuruf
Nov 19 2016 03:21
:D
SymPy implements `exp` for matrices that has a jordan form
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:23
I can make that assumption
so is this just something that hasn't been ported over to SymEngine yet?
Isuru Fernando
@isuruf
Nov 19 2016 03:23
yes
diagonalization or finding a jordan form requires finding the eigenvalues if I remember correctly
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:24
oh and that's not ported either?
Isuru Fernando
@isuruf
Nov 19 2016 03:25
Yes, to find eigenvalues, we need a solver and that's not ported either. If there was a solver, other things are easy
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:26
There are general eigenvalue solvers in Julia
I'll try that on the matrix right now
is the algorithm using the eigendecomposition not bad?
Isuru Fernando
@isuruf
Nov 19 2016 03:28
For the simpler case of diagonal form `A = PDP^-1 => exp(A) = P.exp(D).P^-1`
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:28
ah yeah
looks like that issue has been around awhile
is it low on the priority list?
Isuru Fernando
@isuruf
Nov 19 2016 03:33
We are waiting for SymPy to figure out `solveset` and new assumptions system
`solveset` is a replacement to `solve`
Once SymPy has figured out a good API for both, we can implement in SymEngine
Isuru Fernando
@isuruf
Nov 19 2016 03:38
Also, it was a low priority because solving is not that of a performance issue in SymPy and python users would just switch to sympy for functions not implemented in symengine. But now that the julia wrappers are being used, it should have more priority.
A univariate polynomial solver is the first step
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:40
`solveset` looks like a very complicated solution
Isuru Fernando
@isuruf
Nov 19 2016 03:42
Yes, I agree. a univariate polynomial solver should be enough for this case
Christopher Rackauckas
@ChrisRackauckas
Nov 19 2016 03:50
well it's okay, when this comes it comes. It'll open up a really cool project, but it can wait. Thanks for the information!
And thanks in general for all of the help. This is a really cool piece of software.