using System;
using System.Diagnostics;
public class Test
{
public static void Main()
{
Console.WriteLine("Original");
Console.WriteLine(Original());
Console.WriteLine(TimeCalcOriginal());
Console.WriteLine("PI3");
Console.WriteLine(PI3());
Console.WriteLine(TimeCalcPI3());
Console.ReadKey();
}
public static decimal PI3()
{
decimal pi = 4m, iteration = 3m;
do
{
pi -= 4m / iteration;
iteration += 2m;
pi += 4m / iteration;
iteration += 2m;
//Debug.WriteLine(pi);
} while (Decimal.Round(pi, 5) != 3.14159M);
return iteration;
}
public static decimal Original()
{
decimal number = 0m;
decimal pi;
int i = 1;
do
{
if ((i / 2) % 2 == 0)
{
number += 1m / i;
}
else
{
number -= 1m / i;
}
pi = 4 * number;
i += 2;
} while (Decimal.Round(pi, 5) != 3.14159m);
return i;
}
public static System.TimeSpan TimeCalcOriginal()
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i <= 30; i++)
{
Original();
}
sw.Stop();
return sw.Elapsed;
}
public static System.TimeSpan TimeCalcPI3()
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i <= 30; i++)
{
PI3();
}
sw.Stop();
return sw.Elapsed;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIk9yaWdpbmFsIik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoT3JpZ2luYWwoKSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoVGltZUNhbGNPcmlnaW5hbCgpKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiUEkzIik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoUEkzKCkpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKFRpbWVDYWxjUEkzKCkpOwogICAgICAgIENvbnNvbGUuUmVhZEtleSgpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZGVjaW1hbCBQSTMoKQogICAgewogICAgICAgIGRlY2ltYWwgcGkgPSA0bSwgaXRlcmF0aW9uID0gM207CiAgICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICAgIHBpIC09IDRtIC8gaXRlcmF0aW9uOwogICAgICAgICAgICBpdGVyYXRpb24gKz0gMm07CiAgICAgICAgICAgIHBpICs9IDRtIC8gaXRlcmF0aW9uOwogICAgICAgICAgICBpdGVyYXRpb24gKz0gMm07CiAgICAgICAgICAgIC8vRGVidWcuV3JpdGVMaW5lKHBpKTsKICAgICAgICB9IHdoaWxlIChEZWNpbWFsLlJvdW5kKHBpLCA1KSAhPSAzLjE0MTU5TSk7CiAgICAgICAgcmV0dXJuIGl0ZXJhdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGRlY2ltYWwgT3JpZ2luYWwoKQogICAgewogICAgICAgIGRlY2ltYWwgbnVtYmVyID0gMG07CiAgICAgICAgZGVjaW1hbCBwaTsKICAgICAgICBpbnQgaSA9IDE7CgogICAgICAgIGRvCiAgICAgICAgewogICAgICAgICAgICBpZiAoKGkgLyAyKSAlIDIgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbnVtYmVyICs9IDFtIC8gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG51bWJlciAtPSAxbSAvIGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGkgPSA0ICogbnVtYmVyOwogICAgICAgICAgICBpICs9IDI7CiAgICAgICAgfSB3aGlsZSAoRGVjaW1hbC5Sb3VuZChwaSwgNSkgIT0gMy4xNDE1OW0pOwogICAgICAgIHJldHVybiBpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgU3lzdGVtLlRpbWVTcGFuIFRpbWVDYWxjT3JpZ2luYWwoKQogICAgewogICAgICAgIFN0b3B3YXRjaCBzdyA9IG5ldyBTdG9wd2F0Y2goKTsKICAgICAgICBzdy5TdGFydCgpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDMwOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBPcmlnaW5hbCgpOwogICAgICAgIH0KICAgICAgICBzdy5TdG9wKCk7CiAgICAgICAgcmV0dXJuIHN3LkVsYXBzZWQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBTeXN0ZW0uVGltZVNwYW4gVGltZUNhbGNQSTMoKQogICAgewogICAgICAgIFN0b3B3YXRjaCBzdyA9IG5ldyBTdG9wd2F0Y2goKTsKICAgICAgICBzdy5TdGFydCgpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDMwOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBQSTMoKTsKICAgICAgICB9CiAgICAgICAgc3cuU3RvcCgpOwogICAgICAgIHJldHVybiBzdy5FbGFwc2VkOwogICAgfQp9