Skip to content

Commit

Permalink
Merge pull request #15 from prekel/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
prekel authored Mar 1, 2018
2 parents d231e4c + 8175a8d commit bf86df0
Show file tree
Hide file tree
Showing 40 changed files with 1,891 additions and 227 deletions.
29 changes: 29 additions & 0 deletions MyExpression.Console/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,35 @@ private static void Main(string[] args)
e.Solve();
//System.Console.WriteLine(String.Join(" ", e.AllRoots));
System.Console.WriteLine(" Roots: " + String.Join(" ", e.Roots));

//var s = System.Console.ReadLine();
//var evaluator = new CodeDomEval(s);
//while (true)
//{
// if (!Double.TryParse(System.Console.ReadLine(), out double x)) break;
// var result = evaluator.Eval(x);
// System.Console.WriteLine(result);
//}
//System.Console.ReadKey();

//System.Console.Write("Equation: ");
//var s = System.Console.ReadLine();
//var s = "3x^3-2x^2+x-1";
//var p = Polynomial.Parse(s);
//p.Compile();
//while (true)
//{
// if (!Double.TryParse(System.Console.ReadLine(), out double x)) break;
// var result = p.Evaluate(x);
// System.Console.WriteLine(result);
//}

//var s = "3x^3-2x^2+x-1";
//var p = Polynomial.Parse(s);
//var e = new PolynomialEquation(p, 1e-8);
//e.Solve();
////System.Console.WriteLine(String.Join(" ", e.AllRoots));
//System.Console.WriteLine(" Roots: " + String.Join(" ", e.Roots));
}
}
}
34 changes: 15 additions & 19 deletions MyExpression.Console/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// Управление общими сведениями о сборке осуществляется с помощью
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой.
// Управление общими сведениями о сборке осуществляется с помощью
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой.
[assembly: AssemblyTitle("MyExpression.Console")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
Expand All @@ -14,23 +14,19 @@
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(false)]

// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("28bd1620-c561-4b63-b06a-1a5df030e483")]

// Сведения о версии сборки состоят из следующих четырех значений:
// Сведения о версии сборки состоят из следующих четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер построения
// Редакция
//
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
// используя "*", как показано ниже:
//[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
// Основной номер версии
// Дополнительный номер версии
// Номер построения
// Редакция
[assembly: AssemblyVersion("111.111.111.111")]
[assembly: AssemblyFileVersion("222.222.222.222")]
34 changes: 15 additions & 19 deletions MyExpression.Core.Tests/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// Управление общими сведениями о сборке осуществляется с помощью
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой.
// Управление общими сведениями о сборке осуществляется с помощью
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой.
[assembly: AssemblyTitle("MyExpression.Core.Tests")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
Expand All @@ -14,23 +14,19 @@
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(false)]

// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("0A86B42A-7F3D-45DA-823A-A69930E06064")]

// Сведения о версии сборки состоят из следующих четырех значений:
// Сведения о версии сборки состоят из следующих четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер построения
// Редакция
//
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
// используя "*", как показано ниже:
//[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
// Основной номер версии
// Дополнительный номер версии
// Номер построения
// Редакция
[assembly: AssemblyVersion("111.111.111.111")]
[assembly: AssemblyFileVersion("222.222.222.222")]
42 changes: 42 additions & 0 deletions MyExpression.Core.Tests/CodeDomEvalTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyExpression.Core.Tests
{
[TestFixture]
public class CodeDomEvalTests
{
[Test]
public void RandomSinCos()
{
Func<double, double> evalsin = new CodeDomEval("Math.Sin(x)").Calculate;
double sin(double x) => Math.Sin(x);
Func<double, double> evalcos = new CodeDomEval("Math.Cos(x)").Calculate;
double cos(double x) => Math.Cos(x);
var r = new MyRandom();
for (var i = 0; i < 100; i++)
{
var x = r.Next(100) * r.NextDouble();
Assert.AreEqual(sin(x), evalsin(x));
Assert.AreEqual(cos(x), evalcos(x));
}
}

[Test]
public void Random()
{
Func<double, double> f1 = new CodeDomEval("Math.Sin(x)*1/x*4383+2143/1414+141-1.2*23*x*Math.Abs(x*Math.Sin(x))").Calculate;
double f(double x) => Math.Sin(x) * 1 / x * 4383 + 2143 / 1414 + 141 - 1.2 * 23 * x * Math.Abs(x * Math.Sin(x));
var r = new MyRandom();
for (var i = 0; i < 1000; i++)
{
var x = r.Next(100) * r.NextDouble();
Assert.AreEqual(f(x), f1(x), 1e-8);
}
}
}
}
10 changes: 2 additions & 8 deletions MyExpression.Core.Tests/IntervalTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@ public void Ctor1()
var a = ra.NextDouble() * ra.Next() * ra.NextSign();
var b = ra.NextDouble() * ra.Next() * ra.NextSign();
var l = Math.Min(a, b);
var r = Math.Min(a, b);
var r = Math.Max(a, b);

var iw = new Interval(l, r);
Assert.AreEqual(l, iw.Left);
Assert.AreEqual(r, iw.Right);
Assert.IsFalse(iw.IsLeftOpen);
Assert.IsFalse(iw.IsRightOpen);
}

[Test]
Expand All @@ -37,14 +35,10 @@ public void Ctor2()
var b = ra.NextDouble() * ra.Next() * ra.NextSign();
var l = Math.Min(a, b);
var r = Math.Min(a, b);
var lo = ra.NextBool();
var ro = ra.NextBool();

var iw = new Interval(l, lo, r, ro);
var iw = new Interval(l, r);
Assert.AreEqual(l, iw.Left);
Assert.AreEqual(r, iw.Right);
Assert.AreEqual(lo, iw.IsLeftOpen);
Assert.AreEqual(ro, iw.IsRightOpen);
}
}
}
3 changes: 3 additions & 0 deletions MyExpression.Core.Tests/MyExpression.Core.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,15 @@
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="CodeDomEvalTests.cs" />
<Compile Include="IntervalTests.cs" />
<Compile Include="OpenCloseIntervalTests.cs" />
<Compile Include="MyRandom.cs" />
<Compile Include="LinearEquationTests.cs" />
<Compile Include="MonomialTests.cs" />
<Compile Include="PolynomialEquationTests.cs" />
<Compile Include="PolynomialTests.cs" />
<Compile Include="RecursiveBinarySearchTests.cs" />
<Compile Include="SquareEquationTests.cs" />
</ItemGroup>
<ItemGroup>
Expand Down
50 changes: 50 additions & 0 deletions MyExpression.Core.Tests/OpenCloseIntervalTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Copyright (c) 2018 Vladislav Prekel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using NUnit.Framework;

namespace MyExpression.Core.Tests
{
[TestFixture]
public class OpenCloseIntervalTests
{
[Test]
public void Ctor1()
{
var ra = new MyRandom();
var a = ra.NextDouble() * ra.Next() * ra.NextSign();
var b = ra.NextDouble() * ra.Next() * ra.NextSign();
var l = Math.Min(a, b);
var r = Math.Max(a, b);

var iw = new OpenCloseInterval(l, r);
Assert.AreEqual(l, iw.Left);
Assert.AreEqual(r, iw.Right);
Assert.IsFalse(iw.IsLeftOpen);
Assert.IsFalse(iw.IsRightOpen);
}

[Test]
public void Ctor2()
{
var ra = new MyRandom();
var a = ra.NextDouble() * ra.Next() * ra.NextSign();
var b = ra.NextDouble() * ra.Next() * ra.NextSign();
var l = Math.Min(a, b);
var r = Math.Min(a, b);
var lo = ra.NextBool();
var ro = ra.NextBool();

var iw = new OpenCloseInterval(l, lo, r, ro);
Assert.AreEqual(l, iw.Left);
Assert.AreEqual(r, iw.Right);
Assert.AreEqual(lo, iw.IsLeftOpen);
Assert.AreEqual(ro, iw.IsRightOpen);
}
}
}
Loading

0 comments on commit bf86df0

Please sign in to comment.