}\r
public static double combination(int nn, int kk)\r
{\r
- //return (double)(Int64)(factorial(n) / (factorial(kk) * factorial(n - kk)));\r
+ return (double)(Int64)(factorial(nn) / (factorial(kk) * factorial(nn - kk)));\r
+ /*\r
BigInt n = new BigInt((Int64)nn, new PrecisionSpec());\r
BigInt k = new BigInt((Int64)kk, new PrecisionSpec());\r
BigInt n_k = n - k;\r
k.Factorial();\r
n_k.Factorial();\r
return (double)(Int64)(n / (k * n_k) );\r
+ * */\r
}\r
public static double likelihood(double pp, int yes, int no)\r
{\r
public void waitLoop()\r
{\r
finished = false;\r
- for(int i=0; i<10; i++) {\r
+ for (int i = 0; i < CONST.MAX_ARG; i++)\r
+ {\r
champ[i] = 0;\r
}\r
current = this;\r
started = false;\r
}\r
\r
- public void loop1() { waitLoop(); th = new Thread(new ThreadStart(loop1_)); }\r
- public void loop2() { waitLoop(); th = new Thread(new ThreadStart(loop2_)); }\r
- public void loop3() { waitLoop(); th = new Thread(new ThreadStart(loop3_)); }\r
- public void loop4() { waitLoop(); th = new Thread(new ThreadStart(loop4_)); }\r
- public void loop5() { waitLoop(); th = new Thread(new ThreadStart(loop5_)); }\r
+ public void loop1() { waitLoop(); th = new Thread(new ThreadStart(loop1_)); th.Start(); }\r
+ public void loop2() { waitLoop(); th = new Thread(new ThreadStart(loop2_)); th.Start(); }\r
+ public void loop3() { waitLoop(); th = new Thread(new ThreadStart(loop3_)); th.Start(); }\r
+ public void loop4() { waitLoop(); th = new Thread(new ThreadStart(loop4_)); th.Start(); }\r
+ public void loop5() { waitLoop(); th = new Thread(new ThreadStart(loop5_)); th.Start(); }\r
void loop1_()\r
{\r
started = true;\r
void loop2_()\r
{\r
started = true;\r
- double p;\r
+ double p = 0.0;\r
double like = 1.0;\r
champ_like = 0.0;\r
int L = data.length;\r
{\r
champ_like = like;\r
champ[0] = a;\r
+ champ[1] = b;\r
}\r
}\r
}\r
{\r
champ_like = like;\r
champ[0] = a;\r
+ champ[1] = b;\r
+ champ[1] = c;\r
}\r
}\r
}\r
\r
\r
\r
- class BinomialLikelihood\r
+ public class BinomialLikelihood\r
{\r
+ public static void showWindow(Constants.Func1 f)\r
+ {\r
+ Main.canvas.api_canvas.Dispatcher.BeginInvoke(new Action<Constants.Func1>(showWindow_), f);\r
+ }\r
+ internal static void showWindow_(Constants.Func1 f)\r
+ {\r
+ System.Windows.Controls.ChildWindow page = new PsychlopsSilverlight4.Pages.BinomialSolver(f);\r
+ page.Show();\r
+ }\r
+ public static void showWindow(Constants.Func2 f)\r
+ {\r
+ Main.canvas.api_canvas.Dispatcher.BeginInvoke(new Action<Constants.Func2>(showWindow_), f);\r
+ }\r
+ internal static void showWindow_(Constants.Func2 f)\r
+ {\r
+ System.Windows.Controls.ChildWindow page = new PsychlopsSilverlight4.Pages.BinomialSolver(f);\r
+ page.Show();\r
+ }\r
+ public static void showWindow(Constants.Func3 f)\r
+ {\r
+ Main.canvas.api_canvas.Dispatcher.BeginInvoke(new Action<Constants.Func3>(showWindow_), f);\r
+ }\r
+ internal static void showWindow_(Constants.Func3 f)\r
+ {\r
+ System.Windows.Controls.ChildWindow page = new PsychlopsSilverlight4.Pages.BinomialSolver(f);\r
+ page.Show();\r
+ }\r
+\r
public int iteration;\r
\r
public Interval[] itvl;\r
func1 = d_func;\r
\r
BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4];\r
+ for (int i = 0; i < 4; i++) { l[i] = new BinomialLikelihoodThread(); }\r
\r
for (int k = 0; k < iteration; k++)\r
{\r
func2 = d_func;\r
\r
BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4];\r
+ for (int i = 0; i < 4; i++) { l[i] = new BinomialLikelihoodThread(); }\r
\r
for (int k = 0; k < iteration; k++)\r
{\r
func3 = d_func;\r
\r
BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4];\r
+ for (int i = 0; i < 4; i++) { l[i] = new BinomialLikelihoodThread(); }\r
\r
for (int k = 0; k < iteration; k++)\r
{\r
\r
void end_base(BinomialLikelihoodThread[] l)\r
{\r
- for (int i = 0; i < 4; i++)\r
- {\r
- l[i].th.Join();\r
- }\r
+ //for (int i = 0; i < 4; i++) { l[i].th.Join(); }\r
+ while (!l[0].finished || !l[1].finished || !l[2].finished || !l[3].finished) { Thread.Sleep(100); } \r
\r
for(int j=0; j<Constants.LIMIT; j++) { champ[j] = 0; }\r
+ champ_like = 0.0;\r
for(int i=0; i<4; i++) {\r
if(champ_like < l[i].champ_like) {\r
champ_like = l[i].champ_like;\r