Skip to content

Commit

Permalink
Fix #417 - Complex Numbers are parsed incorrectly (#418)
Browse files Browse the repository at this point in the history
  • Loading branch information
sys27 committed Apr 29, 2021
1 parent 698d548 commit 3e23165
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
4 changes: 2 additions & 2 deletions xFunc.Maths/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -780,8 +780,8 @@ private ImmutableArray<IExpression> ParseParameterList(ref TokenReader tokenRead
var magnitudeNumber = magnitude.NumberValue;
var sign = phaseSign.Is(MinusOperator) ? -1 : 1;
var phaseNumber = phase.NumberValue * sign;
var complex = Complex.FromPolarCoordinates(magnitudeNumber, phaseNumber);
var phaseNumber = AngleValue.Degree(phase.NumberValue * sign).ToRadian();
var complex = Complex.FromPolarCoordinates(magnitudeNumber, phaseNumber.Angle.Number);
return new ComplexNumber(complex);
});
Expand Down
6 changes: 3 additions & 3 deletions xFunc.Tests/ParserTests/ComplexNumberTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public void ComplexWithVarTest2()
[InlineData("10∠+0.78539816339744828°")]
public void ComplexFromPolarTest(string exp)
{
var complex = Complex.FromPolarCoordinates(10, 45 * Math.PI / 180);
var complex = Complex.FromPolarCoordinates(10, 0.78539816339744828 * Math.PI / 180);
var expected = new ComplexNumber(complex);

ParseTest(exp, expected);
Expand All @@ -161,7 +161,7 @@ public void ComplexFromPolarTest(string exp)
[InlineData("+10∠-7.1°")]
public void ComplexFromPolarNegativePhaseTest(string exp)
{
var complex = Complex.FromPolarCoordinates(10, -7.1);
var complex = Complex.FromPolarCoordinates(10, -7.1 * Math.PI / 180);
var expected = new ComplexNumber(complex);

ParseTest(exp, expected);
Expand All @@ -170,7 +170,7 @@ public void ComplexFromPolarNegativePhaseTest(string exp)
[Fact]
public void ComplexFromPolarNegativeMagnitudeTest()
{
var complex = Complex.FromPolarCoordinates(10, 7.1);
var complex = Complex.FromPolarCoordinates(10, 7.1 * Math.PI / 180);
var expected = new UnaryMinus(new ComplexNumber(complex));

ParseTest("-10∠7.1°", expected);
Expand Down

0 comments on commit 3e23165

Please sign in to comment.