-
A library for abstract scientific computations and contains computational methods implementation.
-
Uses
C++20
concepts to abstract algorithms and data structures on algebraic types such asField
,Real
numbers and so on. -
Basic data structures as
Matrix
,Vector
,Polynomial
implemented. -
Solve systems of linear equations using
Gauss
andSimple Iteration
methods. -
Solve equations with only variable using
Half-Division
,Newton
,Simple Iteration
methods. -
Compute an integral of one-argument continuous function on given interval using
Cotes
methods. -
Approximate one-argument function with
Polynomial
usingLeast Sqares
method. -
Find some statistics such as
PCC
,RSS
.
-
A library for symbolic computations.
-
Supports basic operations such as
Addition
,Substraction
,Multiplication
,Division
,Negation
,Exponentiation
. -
Leaf of
Expression
is either aVariable
orLiteral
. -
Has a
DSL
to buildExpression
tree easily. -
Use
Evaluator
visitor to set values (or other expressions) to variables and compute concrete value of a givenExpression
. -
Use
Optimizer
visitor to optimize expression by applying transformations such asa + 0 = a
,a * 1 = a
,2 + 2 = 4
, and many-many others. -
Use
Derivativer
visitor to find anExpression
that is a precise dervivative of a givenExpression
. Then you can optimize it usingOptimizer
and compute usingEvaluator
. -
Goal 1: Add custom functions (
sin
,cos
,ln
) and its
derivatives to expand the application area. -
Goal 2: Integrate it with
Mathematica
and create an implementation ofField
byExpression
tree to be able to run abstract algorihms on symbolic expressions.
Requirements:
cmake
clang 16
clang-tidy
clang-format
clangd
vscode
bash ci/project/build.sh
bash ci/project/test.sh
./build/math-tool --help