Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.04 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using BigNum;
  7.  
  8.  
  9. namespace pi
  10. {
  11.     public class ExpressionSample
  12.     {
  13.         public static BigFloat ergebniss1;
  14.         public static BigFloat ergebniss2;
  15.         public static BigFloat ergebniss3;
  16.         public static BigFloat ergebniss4;
  17.         public static BigFloat ergebniss5;
  18.         public static BigFloat ergebniss6;
  19.         public static BigFloat ergebniss7;
  20.         public static BigFloat ergebniss8;
  21.         public static BigFloat ergebniss9;
  22.         public static BigFloat ergebniss10;
  23.         public static BigFloat ergebniss11;
  24.         public static BigFloat ergebniss12;
  25.         public static BigFloat ergebniss13;
  26.         public static BigFloat ergebniss14;
  27.         public static BigFloat ergebniss15;
  28.         public static BigFloat ergebniss16;
  29.  
  30.  
  31.         public static void Main(String[] args)
  32.         {
  33.             PrecisionSpec Precision = new PrecisionSpec(10*2*System.Environment.ProcessorCount, PrecisionSpec.BaseType.BIN);//2048 is das limit
  34.             Console.WriteLine("Stellen?");
  35.             int schleifen = Convert.ToInt32( Console.ReadLine());
  36.             int start = 0;
  37.             Console.WriteLine(start + "");
  38.             Thread t1 = new Thread(PI);
  39.             Thread t2 = new Thread(PI);
  40.             Thread t3 = new Thread(PI);
  41.             Thread t4 = new Thread(PI);
  42.             Thread t5 = new Thread(PI);
  43.             Thread t6 = new Thread(PI);
  44.             Thread t7 = new Thread(PI);
  45.             Thread t8 = new Thread(PI);
  46.             Thread t9 = new Thread(PI);
  47.             Thread t10 = new Thread(PI);
  48.             Thread t11 = new Thread(PI);
  49.             Thread t12 = new Thread(PI);
  50.             Thread t13 = new Thread(PI);
  51.             Thread t14 = new Thread(PI);
  52.             Thread t15 = new Thread(PI);
  53.             Thread t16 = new Thread(PI);
  54.             t1.Name = "t1";
  55.             t2.Name = "t2";
  56.             t3.Name = "t3";
  57.             t4.Name = "t4";
  58.             t5.Name = "t5";
  59.             t6.Name = "t6";
  60.             t7.Name = "t7";
  61.             t8.Name = "t8";
  62.             t9.Name = "t9";
  63.             t10.Name = "t10";
  64.             t11.Name = "t11";
  65.             t12.Name = "t12";
  66.             t13.Name = "t13";
  67.             t14.Name = "t14";
  68.             t15.Name = "t15";
  69.             t16.Name = "t16";
  70.  
  71.             switch (Environment.ProcessorCount)
  72.             {
  73.                 case 1:
  74.                     t1.Start(start);
  75.                     break;
  76.                 case 2:
  77.                     t1.Start(start);
  78.                     t1.Join();
  79.                     t2.Start(start);
  80.                     break;
  81.                 case 4:
  82.                     t1.Start(start);
  83.                     t2.Start(start);
  84.                     t3.Start(start);
  85.                     t4.Start(start);
  86.                     break;
  87.                 case 3:
  88.                     t1.Start(start);
  89.                     t2.Start(start);
  90.                     t3.Start(start);
  91.                     break;
  92.                 case 6:
  93.                     t1.Start(start);
  94.                     t2.Start(start);
  95.                     t3.Start(start);
  96.                     t4.Start(start);
  97.                     t5.Start(start);
  98.                     t6.Start(start);
  99.  
  100.                     break;
  101.                 case 8:
  102.                     t1.Start(start);
  103.                     t2.Start(start);
  104.                     t3.Start(start);
  105.                     t4.Start(start);
  106.                     t5.Start(start);
  107.                     t6.Start(start);
  108.                     t7.Start(start);
  109.                     t8.Start(start);
  110.                     break;
  111.                 default:
  112.                 case 16:
  113.                     t1.Start(start);
  114.                     t2.Start(start);
  115.                     t3.Start(start);
  116.                     t4.Start(start);
  117.                     t5.Start(start);
  118.                     t6.Start(start);
  119.                     t7.Start(start);
  120.                     t8.Start(start);
  121.                     t9.Start(start);
  122.                     t10.Start(start);
  123.                     t11.Start(start);
  124.                     t12.Start(start);
  125.                     t13.Start(start);
  126.                     t14.Start(start);
  127.                     t15.Start(start);
  128.                     t16.Start(start);
  129.                     break;
  130.             }
  131.             Console.ReadLine();
  132.             //PI(start);
  133.  
  134.  
  135.            
  136.         }
  137.         public static void PI(object o)
  138.         {
  139.             int core=0;
  140.             switch (Thread.CurrentThread.Name)
  141.             {
  142.                 case "t1": core = 0; break;
  143.                 case "t2": core = 1; break;
  144.                 case "t3": core = 2; break;
  145.                 case "t4": core = 3; break;
  146.                 case "t5": core = 4; break;
  147.                 case "t6": core = 5; break;
  148.                 case "t7": core = 6; break;
  149.                 case "t8": core = 7; break;
  150.                 case "t9": core = 8; break;
  151.                 case "t10": core = 9; break;
  152.                 case "t11": core = 10; break;
  153.                 case "t12": core = 11; break;
  154.                 case "t13": core = 12; break;
  155.                 case "t14": core = 13; break;
  156.                 case "t15": core = 14; break;
  157.                 case "t16": core = 15; break;
  158.             }
  159.             int start = (int)o;
  160.             PrecisionSpec Precision = new PrecisionSpec(1000000, PrecisionSpec.BaseType.BIN);//2048 is das limit
  161.             PrecisionSpec Precision1 = new PrecisionSpec(2+1, PrecisionSpec.BaseType.BIN);// denk mal weiter!!!!
  162.             BigFloat pi = new BigFloat(Precision1);
  163.             pi.IsZero();
  164.             //BigFloat eins_f = new BigFloat(1, Precision);
  165.             //BigFloat zwei_f = new BigFloat(2, Precision);
  166.             //BigInt drei = new BigInt(3, Precision);
  167.             BigInt i = new BigInt((10*start)+core, Precision);
  168.             //double zwischenergebniss=0;
  169.             BigInt ende = new BigInt(10, Precision);
  170.             Precision = new PrecisionSpec(2, PrecisionSpec.BaseType.BIN);//2048 is das limit
  171.             int j = (10 * start) + core;
  172.             BigInt add = new BigInt(System.Environment.ProcessorCount, Precision);
  173.             for (i.IsZero(); i.LessThan(ende); i=i+add)
  174.             {
  175.                 j=j+System.Environment.ProcessorCount;
  176.                 BigFloat i_f = new BigFloat(i, Precision);
  177.                 // double eins=((System.Math.Pow(-1,i))/(System.Math.Pow(4,i)));
  178.                 // BigFloat eins = new BigFloat(1,Precision);
  179.                 BigInt minuseins = new BigInt(-1, Precision);
  180.                 BigInt vier = new BigInt(4, Precision);
  181.                 BigInt nulle = new BigInt(0, Precision);
  182.                 BigInt summe1 = new BigInt(1, Precision);
  183.                 BigInt summe2 = new BigInt(2, Precision);
  184.                 BigInt summe3 = new BigInt(3, Precision);
  185.                 vier.Power(i);
  186.                 minuseins.Power(i);
  187.                 if (i.Equals(nulle))
  188.                 {
  189.                     nulle++;
  190.                     minuseins.Assign(nulle);
  191.                 }
  192.                 BigFloat zwischen1 = new BigFloat(vier, Precision);
  193.                 BigFloat zwischen2 = new BigFloat(minuseins, Precision);
  194.                 zwischen2.Div(zwischen1);//Teil 1
  195.                 vier = new BigInt(4, Precision);
  196.                 vier.Mul(i);
  197.                 summe1.Add(vier);
  198.                 summe2.Add(vier);
  199.                 summe3.Add(vier);
  200.                 zwischen1 = new BigFloat(2, Precision);
  201.                 BigFloat zwischen3 = new BigFloat(2, Precision);
  202.                 BigFloat zwischen4 = new BigFloat(1, Precision);
  203.                 BigFloat zwischen5 = new BigFloat(summe1, Precision);//summe1
  204.                 BigFloat zwischen6 = new BigFloat(summe2, Precision);//summe2
  205.                 BigFloat zwischen7 = new BigFloat(summe3, Precision);//summe3
  206.                 zwischen1.Div(zwischen5);// teil 2
  207.                 zwischen3.Div(zwischen6);// teil 3
  208.                 zwischen4.Div(zwischen7);// teil 4            
  209.                 zwischen1.Add(zwischen3);//fehler fehler fehler fehler fehler ferhler ferhler
  210.                 zwischen1.Add(zwischen4);//gesamtsumme
  211.                 //Console.WriteLine(zwischen2.ToString());
  212.                 zwischen2.Mul(zwischen1);//produkt
  213.                 Console.WriteLine(i.ToString());
  214.                 zwischen2.Add(pi);
  215.                 //Console.WriteLine(zwischen2.ToString());
  216.                 pi = new BigFloat(zwischen2, Precision1);
  217.                 Precision = new PrecisionSpec(((j + 2) * 2), PrecisionSpec.BaseType.BIN);
  218.                 Precision1 = new PrecisionSpec(((j + 2) * 2) + 1, PrecisionSpec.BaseType.BIN);
  219.  
  220.                 //pi.Assign(zwischen2);//PI
  221.                 //pi = new BigFloat(pi, Precision1);
  222.                 //Console.WriteLine("");
  223.                 //Console.WriteLine(pi.ToString());
  224.                 //Console.WriteLine("");
  225.                 //Console.WriteLine("");
  226.             }
  227.             switch (Thread.CurrentThread.Name)
  228.             {
  229.                 case "t1":
  230.                     ergebniss1= new BigFloat(0, Precision1);
  231.                     ergebniss1.Assign(pi);
  232.                     break;
  233.                 case "t2":
  234.                     ergebniss2= new BigFloat(0, Precision1);
  235.                     ergebniss2.Assign(pi);
  236.                     break;
  237.                 case "t3":
  238.                     ergebniss3= new BigFloat(0, Precision1);
  239.                     ergebniss3.Assign(pi);
  240.                     break;
  241.                 case "t4":
  242.                     ergebniss4= new BigFloat(0, Precision1);
  243.                     ergebniss4.Assign(pi);
  244.                     break;
  245.                 case "t5":
  246.                     ergebniss5= new BigFloat(0, Precision1);
  247.                     ergebniss5.Assign(pi);
  248.                     break;
  249.                 case "t6":
  250.                     ergebniss6= new BigFloat(0, Precision1);
  251.                     ergebniss6.Assign(pi);
  252.                     break;
  253.                 case "t7":
  254.                     ergebniss7= new BigFloat(0, Precision1);
  255.                     ergebniss7.Assign(pi);
  256.                     break;
  257.                 case "t8":
  258.                     ergebniss8= new BigFloat(0, Precision1);
  259.                     ergebniss8.Assign(pi);
  260.                     break;
  261.                 case "t9":
  262.                     ergebniss9= new BigFloat(0, Precision1);
  263.                     ergebniss9.Assign(pi);
  264.                     break;
  265.                 case "t10":
  266.                     ergebniss10= new BigFloat(0, Precision1);
  267.                     ergebniss10.Assign(pi);
  268.                     break;
  269.                 case "t11":
  270.                     ergebniss11= new BigFloat(0, Precision1);
  271.                     ergebniss11.Assign(pi);
  272.                     break;
  273.                 case "t12":
  274.                     ergebniss12= new BigFloat(0, Precision1);
  275.                     ergebniss12.Assign(pi);
  276.                     break;
  277.                 case "t13":
  278.                     ergebniss13= new BigFloat(0, Precision1);
  279.                     ergebniss13.Assign(pi);
  280.                     break;
  281.                 case "t14":
  282.                     ergebniss14= new BigFloat(0, Precision1);
  283.                     ergebniss14.Assign(pi);
  284.                     break;
  285.                 case "t15":
  286.                     ergebniss15= new BigFloat(0, Precision1);
  287.                     ergebniss15.Assign(pi);
  288.                     break;
  289.                 case "t16":
  290.                     ergebniss16= new BigFloat(0, Precision1);
  291.                     ergebniss16.Assign(pi);
  292.                     break;
  293.             }
  294.             Console.WriteLine("Thread " + core + " fertig");
  295.             ////return pi;
  296.             //Console.WriteLine("");
  297.             //Console.WriteLine("================================================================================");
  298.             //Console.WriteLine("Pi ist ungefähr:");
  299.             //Console.WriteLine("");
  300.             //Console.WriteLine(pi);
  301.             //Console.ReadLine();          
  302.         }
  303.     }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement