LICENSE=BSD-3-ClauseCGO_ENABLED=0go-symbolic is the planned home of computer algebra for go-scikit: expressions, polynomials, differentiation, integration, series, limits and solving, as Mathematica's core offers them, and what Maple adds on top (code generation, algebraic numbers, ODE and PDE solving, triangular decomposition, differential algebra, symbolic random variables, groups and tensors). It is in wave 4, the last of the roadmap, because nearly everything in it waits for the core: the expression DAG, polynomials, GCD and factorisation. There is no library and no release yet: this page says what is planned, in which wave, and against which references it will be validated.
org go-symbolic domain computer algebra status planned (wave 4) release none yet oracles SymPy, python-flint, PARI/GP, FriCAS, Rubi plan go-scikit/roadmap: PLAN.md, STATUS.md
go-symbolic is the planned home of computer algebra for go-scikit: expressions, polynomials, differentiation, integration, series, limits and solving, as Mathematica's core offers them, and what Maple adds on top (code generation, algebraic numbers, ODE and PDE solving, triangular decomposition, differential algebra, symbolic random variables, groups and tensors). It is in wave 4, the last of the roadmap, because nearly everything in it waits for the core: the expression DAG, polynomials, GCD and factorisation. Everything below is planned, not released.
A hash-consed expression DAG with canonical forms, polynomials over Z, Q and F_p, rational functions, differentiation and expansion.
Modular GCD, Cantor-Zassenhaus over F_p, Hensel lifting with van Hoeij recombination over Z.
Rational integration (Hermite, Lazard-Rioboo-Trager), Risch-Norman, a rule engine with Rubi's rules, power series and Gruntz limits.
Buchberger then F4 modulo p, and polynomial-system solving.
Expressions to Go source with common-subexpression elimination on the DAG; C and Fortran emitters only as test oracles.
Algebraic numbers, ODE and PDE solving, triangular decomposition and CAD, differential algebra, symbolic random variables, groups and tensors.
SymPy, python-flint, PARI/GP, Maxima and FriCAS are run as oracles from Go; Maple is proprietary and never one.
GPL and LGPL systems are compared against, never ported; SymPy, FriCAS, Reduce and Rubi are the portable references.
Every go-scikit library is validated against the tool that is the reference of its domain, run as an oracle from Go. These are the criteria planned for go-symbolic.
Polynomials and exact linear algebra are checked by exact equality after a canonical form; factorisation by product equal to the input and irreducible factors; a reduced Gröbner basis is unique for an order, so it must equal the oracle’s.
The derivative of the result minus the integrand must simplify to zero, and the Rubi suite (72,000+ problems) gives a grade histogram: A optimal, B larger, C, F failure.
Generated Go compiles and passes go vet, equals the expression’s interpreter on 1000 random points within a stated ULP bound, and uses no more operations after CSE than SymPy’s cse.
Planned (wave 4). Expression DAG, polynomials over Z, Q and F_p, GCD and factorisation, Gröbner bases, differentiation, integration (Hermite, Risch, Rubi rules), series and limits, exact linear algebra. Repository names are provisional.
Planned (wave 4, after the core). Code generation to Go, algebraic numbers, ODE and PDE solving, triangular decomposition and CAD, differential algebra, symbolic random variables, permutation groups and tensors. Repository names are provisional.
The documentation (Hugo + Hextra): the scope, the plan and the references of each planned library. Source →
Logos and icons for the organization, in SVG / PNG / JPG / ICO / ICNS across colour, white and black variants.
go-symbolic is planned, wave 4. The documentation holds its scope, its plan and its references; the roadmap is PLAN.md.
Read the source on GitHub →