AngouriMath 1.0.13.7-Beta
Prefix ReservedSee the version list below for details.
dotnet add package AngouriMath --version 1.0.13.7-Beta
NuGet\Install-Package AngouriMath -Version 1.0.13.7-Beta
<PackageReference Include="AngouriMath" Version="1.0.13.7-Beta" />
paket add AngouriMath --version 1.0.13.7-Beta
#r "nuget: AngouriMath, 1.0.13.7-Beta"
// Install AngouriMath as a Cake Addin
#addin nuget:?package=AngouriMath&version=1.0.13.7-Beta&prerelease
// Install AngouriMath as a Cake Tool
#tool nuget:?package=AngouriMath&version=1.0.13.7-Beta&prerelease
Nuget: https://www.nuget.org/packages/AngouriMath
AngouriMath
AngouriMath is an open-source library that enables to work with non-linear multi-variable expressions. Its functionality includes derivation, variable substitution, equation solving, and some more.
Use as a simple calculator
var inp = "1 + 2 * log(9, 3)";
var expr = MathS.FromString(inp);
Console.WriteLine(expr.Eval());
>>> 5
Build an expression
var x = MathS.Var("x");
var y = MathS.Var("y");
var c = x * y + x / y;
Console.WriteLine(MathS.Sqr(c));
>>> (x * y + x / y) ^ 2
Substitute variables
var x = MathS.Var("x");
var expr = x * 2 + MathS.Sin(x) / MathS.Sin(MathS.Pow(2, x));
var subs = expr.Substitute(x, 0.3);
Console.WriteLine(subs.Simplify());
>>> 0,9134260185941638
Find derivatives
var x = MathS.Var("x");
var func = MathS.Sqr(x) + MathS.Ln(MathS.Cos(x) + 3) + 4 * x;
var derivative = func.Derive(x);
Console.WriteLine(derivative.Simplify());
>>> 2 * x + -1 * sin(x) / (cos(x) + 3) + 4
Build formulas
var x = MathS.Var("x");
var expr = (x + 3).Pow(x + 4);
Func<NumberEntity, Entity> wow = v => expr.Substitute(x, v).Simplify();
Console.WriteLine(wow(4));
Console.WriteLine(wow(5));
Console.WriteLine(wow(6));
>>> 5764801
>>> 134217728
>>> 3486784401
Render latex
var x = MathS.Var("x");
var y = MathS.Var("y");
var expr = x.Pow(y) + MathS.Sqrt(x + y / 4) * (6 / x);
Console.WriteLine(expr.Latexise());
>>> {x}^{y}+\sqrt{x+\frac{y}{4}}*\frac{6}{x}
Play with complex numbers
var expr = MathS.Pow(MathS.e, MathS.pi * MathS.i);
Console.WriteLine(expr);
Console.WriteLine(expr.Eval());
>>> 2,718281828459045 ^ 3,141592653589793i
>>> -1
Solve eqations
var x = MathS.Var("x");
var equation = (x - 1) * (x - 2) * (MathS.Sqr(x) + 1);
foreach (var re in equation.SolveNt(x))
Console.Write(re.ToString() + " ");
>>> 1 2 1i
Full documentation
Function list
MathS.Sin(x)
MathS.Cos(x)
MathS.Log(num, base),
MathS.Pow(base, power)
MathS.Sqrt(x) = MathS.Pow(x, 0.5)
MathS.Sqr(x) = MathS.Pow(x, 2)
MathS.Tan(x) = MathS.Sin(x) / MathS.Cos(x)
MathS.Cotan(x) = 1 / MathS.Tan(x)
MathS.Sec(x) = 1 / MathS.Cos(x)
MathS.Cosec(x) = 1 / MathS.Sin(x)
MathS.B(x) = x * MathS.Sin(x)
MathS.TB(x) = x * MathS.Cos(x)
MathS.FromString(str) - returns Entity
Entity methods
expr.Derive(x) - derivation for variable x
expr.Eval() - evaluation & simplification
expr.Latexise() - render to latex
expr.SolveNt(expr, from, to, stepCount, precision) - find roots assuming we are solving equation expr=0.
The algorithm iterates on [from.Re; to.Re] for real part and on [from.Im; to.Im] for imaginary part.
The higher stepCount is, the more roots the function can find
Precision - if you get similar roots that you think are equal, you can increase this argument.
You can also decrease MathS.EQUALITY_THRESHOLD which is responsible for comparing Numbers.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on AngouriMath:
Package | Downloads |
---|---|
AngouriMath.FSharp
F# wrapper for some functions from AngouriMath. https://am.angouri.org/quickstart/index.html |
|
CSharpMath.Evaluation
Can convert CSharpMath.Atom.MathList parsed from LaTeX with CSharpMath.Atom.LaTeXParser into actual mathematical expressions that are evaluatable with AngouriMath. Supports arithmetic, trigonometry, symbolic simplification and expansion, as well as matrices, sets, and equation solving. |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on AngouriMath:
Repository | Stars |
---|---|
asc-community/AngouriMath
New open-source cross-platform symbolic algebra library for C# and F#. Can be used for both production and research purposes.
|
|
verybadcat/CSharpMath
LaTeX. in C#. (ported from the wonderful iosMath project).
|
Version | Downloads | Last updated | |
---|---|---|---|
1.4.0-preview.3 | 7,318 | 12/3/2021 | |
1.4.0-preview.2 | 2,266 | 9/15/2021 | |
1.4.0-preview.1 | 1,845 | 8/7/2021 | |
1.3.0 | 106,215 | 7/2/2021 | |
1.3.0-rc.4 | 677 | 7/1/2021 | |
1.3.0-rc.3 | 178 | 7/1/2021 | |
1.3.0-rc.2 | 169 | 7/1/2021 | |
1.3.0-rc.1 | 226 | 6/30/2021 | |
1.3.0-preview.4 | 4,782 | 5/9/2021 | |
1.3.0-preview.3 | 2,217 | 4/21/2021 | |
1.3.0-preview.2 | 1,310 | 3/25/2021 | |
1.3.0-preview.1 | 449 | 3/11/2021 | |
1.2.0 | 3,566 | 3/2/2021 | |
1.2.0-preview.6 | 1,923 | 1/27/2021 | |
1.2.0-preview.5 | 798 | 11/20/2020 | |
1.2.0-preview.4 | 258 | 11/16/2020 | |
1.2.0-preview.3 | 457 | 10/22/2020 | |
1.2.0-preview.2 | 303 | 10/14/2020 | |
1.2.0-preview.1 | 374 | 10/10/2020 |
Minor changes