The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
symengine
is an R interface to the SymEngine C++ library
for symbolic computation.
There are some dependencies needed on Unix systems. You may install them with
zypper install cmake gmp-devel mpfr-devel mpc-devel ## openSUSE
dnf install cmake gmp-devel mpfr-devel libmpc-devel ## Fedora
apt install cmake libgmp-dev libmpfr-dev libmpc-dev ## Debian
brew install cmake gmp mpfr libmpc ## Mac OS
Then you can install the R package with
::install_github("symengine/symengine.R") devtools
On Windows, you will need to install Rtools42 for building the package from source.
Please report any problem installing the package on your system.
library(symengine)
#> SymEngine Version: 0.9.0
#> _____ _____ _
#> | __|_ _ _____| __|___ ___|_|___ ___
#> |__ | | | | __| | . | | | -_|
#> |_____|_ |_|_|_|_____|_|_|_ |_|_|_|___|
#> |___| |___|
Also check the documentation site with built vignettes and help pages at http://symengine.marlin.pub.
use_vars(x, y, z)
#> Initializing 'x', 'y', 'z'
<- (x + y + z) ^ 2L - 42L
expr expand(expr)
#> (Add) -42 + 2*x*y + 2*x*z + 2*y*z + x^2 + y^2 + z^2
Substitue z
as a
and y
as
x^2
.
<- S("a")
a <- subs(expr, z, a)
expr <- subs(expr, y, x^2L)
expr
expr#> (Add) -42 + (a + x + x^2)^2
Second derivative of expr
with regards to
x
:
<- D(expr, "x")
d1_expr <- D(d1_expr, "x")
d2_expr expand(d2_expr)
#> (Add) 2 + 4*a + 12*x + 12*x^2
Solve the equation of d2_expr == 0
with regards to
x
.
<- solve(d2_expr, "x")
solutions
solutions#> VecBasic of length 2
#> V( -1/2 + (-1/2)*sqrt(1 + (-1/3)*(2 + 4*a)), -1/2 + (1/2)*sqrt(1 + (-1/3)*(2 + 4*a)) )
For the two solutions above, we can convert them into a function that gives numeric output with regards to given input.
<- as.function(solutions)
func <- func(a = -100:-95)
ans colnames(ans) <- c("Solution1", "Solution2")
ans#> Solution1 Solution2
#> [1,] -6.280715 5.280715
#> [2,] -6.251811 5.251811
#> [3,] -6.222762 5.222762
#> [4,] -6.193564 5.193564
#> [5,] -6.164215 5.164215
#> [6,] -6.134714 5.134714
The next prime number greater than 2^400.
<- nextprime(S(~ 2 ^ 400))
n
n#> (Integer) 2582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493557
The greatest common divisor between the prime number and 42.
GCD(n, 42)
#> (Integer) 1
The binomial coefficient (2^30 ¦ 5)
.
choose(S(~ 2^30), 5L)
#> (Integer) 11893730661780666387808571314613824587300864
Pi “computed” to 400-bit precision number.
if (symengine_have_component("mpfr"))
evalf(Constant("pi"), bits = 400)
#> (RealMPFR,prec400) 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066
+ y == S("x + y")
x #> [1] TRUE
+ y != S("x + y")
x #> [1] FALSE
sin(x)/cos(x)
#> (Mul) sin(x)/cos(x)
tan(x) == sin(x)/cos(x) # Different internal representation
#> [1] FALSE
This project was a Google Summer of Code project under the organization of The R Project for Statistical Computing in 2018. The student was Xin Chen, mentored by Jialin Ma and Isuru Fernando.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.