X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=dev4%2Fpsychlops%2Fextention%2Fmath%2Fsolver.cs;fp=dev4%2Fpsychlops%2Fextention%2Fmath%2Fsolver.cs;h=0a149ec0a986b9735fea81ccfeb0d5969688b904;hb=c7bc82580bbb03f0dcec6f68178513cc94152dcc;hp=eca5c7af96ee05c23ba78efd10c3beb3c2ebda5f;hpb=a4fbd5c94992b9e0e3e57d550706ba6b05bfd6a6;p=psychlops%2Fsilverlight.git diff --git a/dev4/psychlops/extention/math/solver.cs b/dev4/psychlops/extention/math/solver.cs index eca5c7a..0a149ec 100644 --- a/dev4/psychlops/extention/math/solver.cs +++ b/dev4/psychlops/extention/math/solver.cs @@ -38,7 +38,8 @@ namespace Psychlops } public static double combination(int nn, int kk) { - //return (double)(Int64)(factorial(n) / (factorial(kk) * factorial(n - kk))); + return (double)(Int64)(factorial(nn) / (factorial(kk) * factorial(nn - kk))); + /* BigInt n = new BigInt((Int64)nn, new PrecisionSpec()); BigInt k = new BigInt((Int64)kk, new PrecisionSpec()); BigInt n_k = n - k; @@ -46,6 +47,7 @@ namespace Psychlops k.Factorial(); n_k.Factorial(); return (double)(Int64)(n / (k * n_k) ); + * */ } public static double likelihood(double pp, int yes, int no) { @@ -124,18 +126,19 @@ namespace Psychlops public void waitLoop() { finished = false; - for(int i=0; i<10; i++) { + for (int i = 0; i < CONST.MAX_ARG; i++) + { champ[i] = 0; } current = this; started = false; } - public void loop1() { waitLoop(); th = new Thread(new ThreadStart(loop1_)); } - public void loop2() { waitLoop(); th = new Thread(new ThreadStart(loop2_)); } - public void loop3() { waitLoop(); th = new Thread(new ThreadStart(loop3_)); } - public void loop4() { waitLoop(); th = new Thread(new ThreadStart(loop4_)); } - public void loop5() { waitLoop(); th = new Thread(new ThreadStart(loop5_)); } + public void loop1() { waitLoop(); th = new Thread(new ThreadStart(loop1_)); th.Start(); } + public void loop2() { waitLoop(); th = new Thread(new ThreadStart(loop2_)); th.Start(); } + public void loop3() { waitLoop(); th = new Thread(new ThreadStart(loop3_)); th.Start(); } + public void loop4() { waitLoop(); th = new Thread(new ThreadStart(loop4_)); th.Start(); } + public void loop5() { waitLoop(); th = new Thread(new ThreadStart(loop5_)); th.Start(); } void loop1_() { started = true; @@ -160,7 +163,7 @@ namespace Psychlops void loop2_() { started = true; - double p; + double p = 0.0; double like = 1.0; champ_like = 0.0; int L = data.length; @@ -178,6 +181,7 @@ namespace Psychlops { champ_like = like; champ[0] = a; + champ[1] = b; } } } @@ -206,6 +210,8 @@ namespace Psychlops { champ_like = like; champ[0] = a; + champ[1] = b; + champ[1] = c; } } } @@ -226,8 +232,36 @@ namespace Psychlops - class BinomialLikelihood + public class BinomialLikelihood { + public static void showWindow(Constants.Func1 f) + { + Main.canvas.api_canvas.Dispatcher.BeginInvoke(new Action(showWindow_), f); + } + internal static void showWindow_(Constants.Func1 f) + { + System.Windows.Controls.ChildWindow page = new PsychlopsSilverlight4.Pages.BinomialSolver(f); + page.Show(); + } + public static void showWindow(Constants.Func2 f) + { + Main.canvas.api_canvas.Dispatcher.BeginInvoke(new Action(showWindow_), f); + } + internal static void showWindow_(Constants.Func2 f) + { + System.Windows.Controls.ChildWindow page = new PsychlopsSilverlight4.Pages.BinomialSolver(f); + page.Show(); + } + public static void showWindow(Constants.Func3 f) + { + Main.canvas.api_canvas.Dispatcher.BeginInvoke(new Action(showWindow_), f); + } + internal static void showWindow_(Constants.Func3 f) + { + System.Windows.Controls.ChildWindow page = new PsychlopsSilverlight4.Pages.BinomialSolver(f); + page.Show(); + } + public int iteration; public Interval[] itvl; @@ -258,6 +292,7 @@ namespace Psychlops func1 = d_func; BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4]; + for (int i = 0; i < 4; i++) { l[i] = new BinomialLikelihoodThread(); } for (int k = 0; k < iteration; k++) { @@ -276,6 +311,7 @@ namespace Psychlops func2 = d_func; BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4]; + for (int i = 0; i < 4; i++) { l[i] = new BinomialLikelihoodThread(); } for (int k = 0; k < iteration; k++) { @@ -294,6 +330,7 @@ namespace Psychlops func3 = d_func; BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4]; + for (int i = 0; i < 4; i++) { l[i] = new BinomialLikelihoodThread(); } for (int k = 0; k < iteration; k++) { @@ -340,12 +377,11 @@ namespace Psychlops void end_base(BinomialLikelihoodThread[] l) { - for (int i = 0; i < 4; i++) - { - l[i].th.Join(); - } + //for (int i = 0; i < 4; i++) { l[i].th.Join(); } + while (!l[0].finished || !l[1].finished || !l[2].finished || !l[3].finished) { Thread.Sleep(100); } for(int j=0; j