Skip to content

Commit 4ff0961

Browse files
Merge branch 'master' of https://github.com/Angourisoft/MathS
2 parents 59c4d5c + db55b18 commit 4ff0961

7 files changed

Lines changed: 46 additions & 66 deletions

File tree

AngouriMath/Core/FromString/Lexer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace AngouriMath.Core.FromString
77
{
88
internal class TokenList : List<Token>
99
{
10-
public void Add(Token a)
10+
public new void Add(Token a)
1111
{
1212
if (!string.IsNullOrEmpty(a.Value))
1313
{

AngouriMath/Core/Sys/Entity.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ namespace AngouriMath
1212
/// Every node, expression, or number is an Entity
1313
/// However, you cannot create an instance of this class
1414
/// </summary>
15+
#pragma warning disable CS0660
16+
#pragma warning disable CS0661
1517
public abstract partial class Entity
18+
#pragma warning restore CS0661
19+
#pragma warning restore CS0660
1620
{
1721
public string Name { get; set; }
1822
public bool IsLeaf { get => Children.Count == 0; }
@@ -93,7 +97,7 @@ public NumberEntity(Number value) : base(value.ToString()) {
9397
Value = value;
9498
}
9599
public Number Value { get; internal set; }
96-
public string Name { get => Value.ToString(); }
100+
public new string Name { get => Value.ToString(); }
97101
public static implicit operator NumberEntity(int num) => new NumberEntity(num);
98102
public static implicit operator NumberEntity(Number num) => new NumberEntity(num);
99103
}

AngouriMath/Core/Sys/Number.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66

77
namespace AngouriMath.Core
88
{
9+
#pragma warning disable CS0660
10+
#pragma warning disable CS0661
911
public class Number
12+
#pragma warning restore CS0660
13+
#pragma warning restore CS0661
1014
{
1115
/// <summary>
1216
/// To get real value of the number

AngouriMath/Functions/Algebra/NewtonSolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ private Number NewtonIter(FastExpression f, FastExpression df, VariableEntity x,
3030
{
3131
value = value - f.Substitute(value) / df.Substitute(value);
3232
}
33-
catch(MathSException e)
33+
catch(MathSException)
3434
{
3535
throw new MathSException("Two or more variables in SolveNt is forbidden");
3636
}

AngouriMath/Functions/Evaluation/Compilation/FastExpression.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,13 @@ private void InnerCompile(InstructionSet instructions, string[] variables, Dicti
6262
}
6363
public class FastExpression
6464
{
65-
private Stack stack;
65+
private Stack<Number> stack;
6666
private InstructionSet instructions;
6767
private int varCount;
6868
internal FastExpression(InstructionSet instructions, int varCount)
6969
{
7070
this.varCount = varCount;
71-
stack = new Stack(instructions.Count);
71+
stack = new Stack<Number>(instructions.Count);
7272
this.instructions = instructions;
7373
}
7474

@@ -108,9 +108,9 @@ public Number Substitute(params Number[] variables)
108108
break;
109109
}
110110
}
111-
if (stack.Depth != 1)
111+
if (stack.Count != 1)
112112
throw new Exception("Stack error");
113-
var res = stack.Last;
113+
var res = stack.Peek();
114114
stack.Clear();
115115
return res;
116116
}

AngouriMath/Functions/Evaluation/Compilation/MathFunctions.cs

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ internal static class CompiledMathFunctions
1919
{ "logf", 7 },
2020
};
2121

22-
internal delegate void CompiledFunction(Stack stack);
22+
internal delegate void CompiledFunction(Stack<Number> stack);
2323
internal static CompiledFunction[] functions =
2424
new CompiledFunction[]
2525
{
@@ -35,45 +35,51 @@ internal static class CompiledMathFunctions
3535

3636
internal static Number[] buffer = new Number[10];
3737

38-
internal static void Sumf(Stack stack)
38+
internal static void Sumf(Stack<Number> stack)
3939
{
40-
stack.Pop(2, buffer);
41-
stack.Push(buffer[0] + buffer[1]);
40+
Number n1 = stack.Pop();
41+
Number n2 = stack.Pop();
42+
stack.Push(n1 + n2);
4243
}
43-
internal static void Minusf(Stack stack)
44+
internal static void Minusf(Stack<Number> stack)
4445
{
45-
stack.Pop(2, buffer);
46-
stack.Push(buffer[0] - buffer[1]);
46+
Number n1 = stack.Pop();
47+
Number n2 = stack.Pop();
48+
stack.Push(n1 - n2);
4749
}
48-
internal static void Mulf(Stack stack)
50+
internal static void Mulf(Stack<Number> stack)
4951
{
50-
stack.Pop(2, buffer);
51-
stack.Push(buffer[0] * buffer[1]);
52+
Number n1 = stack.Pop();
53+
Number n2 = stack.Pop();
54+
stack.Push(n1 * n2);
5255
}
53-
internal static void Divf(Stack stack)
56+
internal static void Divf(Stack<Number> stack)
5457
{
55-
stack.Pop(2, buffer);
56-
stack.Push(buffer[0] / buffer[1]);
58+
Number n1 = stack.Pop();
59+
Number n2 = stack.Pop();
60+
stack.Push(n1 / n2);
5761
}
58-
internal static void Powf(Stack stack)
62+
internal static void Powf(Stack<Number> stack)
5963
{
60-
stack.Pop(2, buffer);
61-
stack.Push(Number.Pow(buffer[0], buffer[1]));
64+
Number n1 = stack.Pop();
65+
Number n2 = stack.Pop();
66+
stack.Push(Number.Pow(n1, n2));
6267
}
63-
internal static void Sinf(Stack stack)
68+
internal static void Sinf(Stack<Number> stack)
6469
{
65-
stack.Pop(1, buffer);
66-
stack.Push(Number.Sin(buffer[0]));
70+
Number n = stack.Pop();
71+
stack.Push(Number.Sin(n));
6772
}
68-
internal static void Cosf(Stack stack)
73+
internal static void Cosf(Stack<Number> stack)
6974
{
70-
stack.Pop(1, buffer);
71-
stack.Push(Number.Cos(buffer[0]));
75+
Number n = stack.Pop();
76+
stack.Push(Number.Cos(n));
7277
}
73-
internal static void Logf(Stack stack)
78+
internal static void Logf(Stack<Number> stack)
7479
{
75-
stack.Pop(2, buffer);
76-
stack.Push(Number.Log(buffer[0], buffer[1]));
80+
Number n1 = stack.Pop();
81+
Number n2 = stack.Pop();
82+
stack.Push(Number.Log(n1, n2));
7783
}
7884
}
7985
}

AngouriMath/Functions/Evaluation/Compilation/Stack.cs

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)