Math functions implementation
This commit is contained in:
parent
19a1ddb334
commit
44ddb1fbec
@ -1 +1 @@
|
|||||||
Subproject commit 43d38645a527aff10f585a01f62313cbd840014e
|
Subproject commit d83106358fbf7293a112d6f3c75f6113e546aa09
|
||||||
@ -15,15 +15,21 @@ public class ComplicatedExpressionTests
|
|||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9,2,3)]
|
[InlineData(0.9,2,3)]
|
||||||
public void Expression2(double a, double b, double c) =>
|
public void Expression2(double a, double b, double c) =>
|
||||||
Assert.Equal( Math.Sin(a)-b*Math.Cos(c), Calculator.Calculate($"sin(({a}))-(({b})*cos(({c})))"));
|
Assert.Equal( Math.Sin(a)-b*Math.Cos(c),
|
||||||
|
Calculator.Calculate($"sin(({a}))-(({b})*cos(({c})))"),
|
||||||
|
FunctionTests.PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9,2,3)]
|
[InlineData(0.9,2,3)]
|
||||||
public void Expression3(double a, double b, double c) =>
|
public void Expression3(double a, double b, double c) =>
|
||||||
Assert.Equal( a*Math.Pow(b,c)+a*Math.Pow(b,c+1)+a*Math.Pow(b,c+2), Calculator.Calculate($"({a})*({b})^({c}) + ({a})*({b})^({c+1}) + ({a})*({b})^({c+2})"));
|
Assert.Equal( a*Math.Pow(b,c)+a*Math.Pow(b,c+1)+a*Math.Pow(b,c+2),
|
||||||
|
Calculator.Calculate($"({a})*({b})^({c}) + ({a})*({b})^({c+1}) + ({a})*({b})^({c+2})"),
|
||||||
|
FunctionTests.PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9,2,3)]
|
[InlineData(0.9,2,3)]
|
||||||
public void Expression4(double a, double b, double c) =>
|
public void Expression4(double a, double b, double c) =>
|
||||||
Assert.Equal(a/(b+Math.Tan(c)), Calculator.Calculate($"({a})/(({b})+tan(({c})))"));
|
Assert.Equal(a/(b+Math.Tan(c)),
|
||||||
|
Calculator.Calculate($"({a})/(({b})+tan(({c})))"),
|
||||||
|
FunctionTests.PRECISION);
|
||||||
}
|
}
|
||||||
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
public class FunctionTests
|
public class FunctionTests
|
||||||
{
|
{
|
||||||
|
public const int PRECISION = 8;
|
||||||
|
|
||||||
public FunctionTests()
|
public FunctionTests()
|
||||||
{
|
{
|
||||||
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
|
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
|
||||||
@ -12,32 +14,56 @@ public class FunctionTests
|
|||||||
[InlineData(1)]
|
[InlineData(1)]
|
||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
|
[InlineData(Math.PI/4)]
|
||||||
|
[InlineData(Math.PI/2)]
|
||||||
|
[InlineData(Math.PI*3/4)]
|
||||||
|
[InlineData(Math.PI*2)]
|
||||||
|
[InlineData(999)]
|
||||||
|
[InlineData(-999)]
|
||||||
public void Sin(double a) =>
|
public void Sin(double a) =>
|
||||||
Assert.Equal(Math.Sin(a), Calculator.Calculate($"sin({a})"));
|
Assert.Equal(Math.Sin(a), Calculator.Calculate($"sin({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(5)]
|
||||||
[InlineData(1)]
|
[InlineData(1)]
|
||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
|
[InlineData(Math.PI/4)]
|
||||||
|
[InlineData(Math.PI/2)]
|
||||||
|
[InlineData(Math.PI*3/4)]
|
||||||
|
[InlineData(Math.PI*2)]
|
||||||
|
[InlineData(999)]
|
||||||
|
[InlineData(-999)]
|
||||||
public void Cos(double a) =>
|
public void Cos(double a) =>
|
||||||
Assert.Equal(Math.Cos(a), Calculator.Calculate($"cos({a})"));
|
Assert.Equal(Math.Cos(a), Calculator.Calculate($"cos({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(5)]
|
||||||
[InlineData(1)]
|
[InlineData(1)]
|
||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
|
[InlineData(Math.PI/4)]
|
||||||
|
[InlineData(Math.PI/1.99)]
|
||||||
|
[InlineData(Math.PI*3/4)]
|
||||||
|
[InlineData(Math.PI*1.99)]
|
||||||
|
[InlineData(999)]
|
||||||
|
[InlineData(-999)]
|
||||||
public void Tan(double a) =>
|
public void Tan(double a) =>
|
||||||
Assert.Equal(Math.Tan(a), Calculator.Calculate($"tan({a})"));
|
Assert.Equal(Math.Tan(a), Calculator.Calculate($"tan({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(5)]
|
||||||
[InlineData(1)]
|
[InlineData(1)]
|
||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
|
[InlineData(Math.PI/4)]
|
||||||
|
[InlineData(Math.PI/2)]
|
||||||
|
[InlineData(Math.PI*3/4)]
|
||||||
|
[InlineData(Math.PI*1.99)]
|
||||||
|
[InlineData(999)]
|
||||||
|
[InlineData(-999)]
|
||||||
public void Ctg(double a) =>
|
public void Ctg(double a) =>
|
||||||
Assert.Equal(1 / Math.Tan(a), Calculator.Calculate($"ctg({a})"));
|
Assert.Equal(1 / Math.Tan(a), Calculator.Calculate($"ctg({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(0.9)]
|
||||||
@ -45,7 +71,7 @@ public class FunctionTests
|
|||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
public void Asin(double a) =>
|
public void Asin(double a) =>
|
||||||
Assert.Equal( Math.Asin(a), Calculator.Calculate($"asin({a})"));
|
Assert.Equal( Math.Asin(a), Calculator.Calculate($"asin({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(0.9)]
|
||||||
@ -53,7 +79,7 @@ public class FunctionTests
|
|||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
public void Acos(double a) =>
|
public void Acos(double a) =>
|
||||||
Assert.Equal( Math.Acos(a), Calculator.Calculate($"acos({a})"));
|
Assert.Equal( Math.Acos(a), Calculator.Calculate($"acos({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(0.9)]
|
||||||
@ -61,7 +87,7 @@ public class FunctionTests
|
|||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
public void Atan(double a) =>
|
public void Atan(double a) =>
|
||||||
Assert.Equal( Math.Atan(a), Calculator.Calculate($"atan({a})"));
|
Assert.Equal( Math.Atan(a), Calculator.Calculate($"atan({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(0.9)]
|
||||||
@ -69,7 +95,7 @@ public class FunctionTests
|
|||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
public void Actg(double a) =>
|
public void Actg(double a) =>
|
||||||
Assert.Equal( Math.Atan(1 / a), Calculator.Calculate($"actg({a})"));
|
Assert.Equal( Math.Atan(1 / a), Calculator.Calculate($"actg({a})"), PRECISION);
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(0.9)]
|
[InlineData(0.9)]
|
||||||
@ -77,5 +103,5 @@ public class FunctionTests
|
|||||||
[InlineData(-3)]
|
[InlineData(-3)]
|
||||||
[InlineData(-2)]
|
[InlineData(-2)]
|
||||||
public void Ln(double a) =>
|
public void Ln(double a) =>
|
||||||
Assert.Equal( Math.Log(a), Calculator.Calculate($"ln({a})"));
|
Assert.Equal( Math.Log(a), Calculator.Calculate($"ln({a})"), PRECISION);
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user