All Projects → BowenFu → mathiu.cpp

BowenFu / mathiu.cpp

Licence: Apache-2.0 License
mathiu : a simple computer algebra system in C++.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to mathiu.cpp

symbolic-pymc
Tools for the symbolic manipulation of PyMC models, Theano, and TensorFlow graphs.
Stars: ✭ 58 (+0%)
Mutual labels:  symbolic-computation, symbolic-math
Kelvin
A powerful language for symbolic computation written in Swift.
Stars: ✭ 23 (-60.34%)
Mutual labels:  symbolic-computation, computer-algebra-system
SymbolicTensors.jl
Manipulate tensors symbolically in Julia! Currently needs a SymPy dependency, but work is ongoing to change the backend to SymbolicUtils.jl
Stars: ✭ 26 (-55.17%)
Mutual labels:  symbolic-computation, symbolic-math
Symbolics.jl
A symbolic math library written in Julia modelled off scmutils
Stars: ✭ 98 (+68.97%)
Mutual labels:  computer-algebra-system, symbolic-math
stlkrn
C++ STL in the Windows Kernel with C++ Exception Support
Stars: ✭ 216 (+272.41%)
Mutual labels:  cpp17-library
CC33Z
Curso de Ciência da Computação
Stars: ✭ 50 (-13.79%)
Mutual labels:  symbolic-computation
Metatheory.jl
General purpose algebraic metaprogramming and symbolic computation library for the Julia programming language: E-Graphs & equality saturation, term rewriting and more.
Stars: ✭ 266 (+358.62%)
Mutual labels:  symbolic-computation
aeppl
Tools for an Aesara-based PPL.
Stars: ✭ 46 (-20.69%)
Mutual labels:  symbolic-computation
mathics-core
An open-source Mathematica. This repository contains the Python modules for WL Built-in functions, variables, core primitives, e.g. Symbol, a parser to create Expressions, and an evaluator to execute them.
Stars: ✭ 83 (+43.1%)
Mutual labels:  computer-algebra-system
obake
A C++20 library for the symbolic manipulation of sparse polynomials & co.
Stars: ✭ 16 (-72.41%)
Mutual labels:  computer-algebra-system
samp-ptl
SA:MP Plugin Template Library (C++17)
Stars: ✭ 16 (-72.41%)
Mutual labels:  cpp17-library
cppcombinator
parser combinator and AST generator in c++17
Stars: ✭ 20 (-65.52%)
Mutual labels:  cpp17-library
eqnet
Code related to "Learning Continuous Semantic Representations of Symbolic Expressions" project.
Stars: ✭ 34 (-41.38%)
Mutual labels:  symbolic-expressions
Bracmat
Programming language for symbolic computation with unusual combination of pattern matching features: Tree patterns, associative patterns and expressions embedded in patterns.
Stars: ✭ 42 (-27.59%)
Mutual labels:  symbolic-computation
Euler
The open-source computational framework for the Swift language
Stars: ✭ 37 (-36.21%)
Mutual labels:  symbolic-computation
java-algebra-system
An extensible, intuitive and easy to use algebra system that is capable of algebraic manipulation, simplification, differentiation, and much more. Reverse engineered from TI-nspire CAS.
Stars: ✭ 36 (-37.93%)
Mutual labels:  computer-algebra-system
fixed string
C++17 string with fixed size
Stars: ✭ 64 (+10.34%)
Mutual labels:  cpp17-library
neuralMath
Combining Symbolic and Function Evaluation Expressions In Neural Programs
Stars: ✭ 29 (-50%)
Mutual labels:  symbolic-math
SymbolicControlSystems.jl
An interface between ControlSystems.jl and SymPy.jl
Stars: ✭ 20 (-65.52%)
Mutual labels:  symbolic-computation
HashedExpression
Type-safe modelling DSL, symbolic transformation, and code generation for solving optimization problems.
Stars: ✭ 40 (-31.03%)
Mutual labels:  symbolic-computation

mathiu.cpp

mathiu : a simple computer algebra system in C++

mathiu

Standard Type

Platform Platform Platform

CMake CMake GitHub license codecov

The library originated as a demo library showing the usage of the C++ pattern matching library match(it).

But now it is developed independently.

Features

Differentiation

auto const x = "x"_s;
auto const e = x ^ (2_i / 3_i);
auto const d = diff(e, x);
// prints (* 2/3 (^ x -1/3))
std::cout << toString(d) << std::endl;

Equation Solving

auto const x = "x"_s;
auto const eq = 2_i * x * x - 3_i * x + 1_i == 0_i;
auto const solutions = solve(eq, x);
// prints {1/2 1}
std::cout << toString(solutions) << std::endl;

Inequation Solving

auto const e1 = ("x"_s ^ 2_i) - 1_i;
auto const e2 = (("x"_s - 3_i) ^ 2_i) - 3_i;;
auto const ineq = e1 > e2;
auto const suolutions = solveInequation(ineq, "x"_s);
// prints (OOInterval 7/6 inf)
std::cout << toString(solutions) << std::endl;

Get Function Range

auto e = min(max(-"x"_s, "x"_s), 2_i);
auto const domain = interval(-3_i, true, 3_i, true);
auto const range = functionRange(e, "x"_s, domain);
// prints (CCInterval 0 2)
std::cout << toString(range) << std::endl;
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].