# AngouriMath 1.0.13.7-Beta

Enables to work with formulas built in the code or from a string. Computing, derivating, latex rendering, and many more.

This is a prerelease version of AngouriMath.
There is a newer version of this package available.
See the version list below for details.
Install-Package AngouriMath -Version 1.0.13.7-Beta
dotnet add package AngouriMath --version 1.0.13.7-Beta
<PackageReference Include="AngouriMath" Version="1.0.13.7-Beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AngouriMath --version 1.0.13.7-Beta

## Documentation 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. 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.

Minor changes

## Dependencies

• #### .NETStandard 2.0

• No dependencies.

## Used By

### GitHub repositories (0)

This package is not used by any popular GitHub repositories.

## Version History

1.1.0.1 42 6/25/2020
1.1.0 46 6/5/2020
1.1.0-Beta 66 6/3/2020
1.0.20 75 4/23/2020
1.0.18-Alpha 120 2/4/2020
1.0.17.2-Beta 101 1/6/2020
1.0.17.1-Beta 92 1/5/2020
1.0.17-Beta 113 1/3/2020
1.0.16.2-Beta 194 1/2/2020
1.0.16.1-Beta 104 12/31/2019
1.0.16-Beta 163 12/31/2019
1.0.15.1 99 12/27/2019
1.0.15 94 12/25/2019
1.0.14 97 12/23/2019
1.0.13.7-Beta 110 12/23/2019
1.0.12 85 12/21/2019
1.0.11 83 12/8/2019
Show less