\r
namespace Solver\r
{\r
+ internal static class CONST\r
+ {\r
+ public static readonly uint MAX_ARG = 5;\r
+ }\r
\r
\r
static public class Constants\r
\r
public BinomialLikelihoodThread()\r
{\r
+ itvl = new Interval[CONST.MAX_ARG];\r
+ step = new double[CONST.MAX_ARG];\r
+ champ = new double[CONST.MAX_ARG];\r
+ data = new BernoulliProcess();\r
}\r
public void waitLoop()\r
{\r
\r
public BinomialLikelihood()\r
{\r
+ itvl = new Interval[CONST.MAX_ARG];\r
+ step = new double[CONST.MAX_ARG];\r
+ champ = new double[CONST.MAX_ARG];\r
iteration = 2;\r
}\r
\r
\r
BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4];\r
\r
- double r, low, high;\r
for (int k = 0; k < iteration; k++)\r
{\r
- champ_like = 0;\r
-\r
begin_base(l);\r
for (int i = 0; i < 4; i++)\r
{\r
l[i].loop1();\r
}\r
end_base(l);\r
-\r
- for (int j = 0; j < Constants.LIMIT; j++)\r
- {\r
- r = itvl[j].end.val - itvl[j].begin.val;\r
- low = champ[j] - r / 8.0 < itvl[j].begin.val ? itvl[j].begin.val : champ[j] - r / 8.0;\r
- high = champ[j] + r / 8.0 > itvl[j].end.val ? itvl[j].end.val : champ[j] + r / 8.0;\r
- itvl[j] = new Interval(low, high);\r
- }\r
}\r
}\r
public void begin(Constants.Func2 d_func)\r
\r
BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4];\r
\r
- double r, low, high;\r
for (int k = 0; k < iteration; k++)\r
{\r
- champ_like = 0;\r
-\r
begin_base(l);\r
for (int i = 0; i < 4; i++)\r
{\r
l[i].loop2();\r
}\r
end_base(l);\r
-\r
- for (int j = 0; j < Constants.LIMIT; j++)\r
- {\r
- r = itvl[j].end.val - itvl[j].begin.val;\r
- low = champ[j] - r / 8.0 < itvl[j].begin.val ? itvl[j].begin.val : champ[j] - r / 8.0;\r
- high = champ[j] + r / 8.0 > itvl[j].end.val ? itvl[j].end.val : champ[j] + r / 8.0;\r
- itvl[j] = new Interval(low, high);\r
- }\r
}\r
}\r
public void begin(Constants.Func3 d_func)\r
\r
BinomialLikelihoodThread[] l = new BinomialLikelihoodThread[4];\r
\r
- double r, low, high;\r
for (int k = 0; k < iteration; k++)\r
{\r
- champ_like = 0;\r
-\r
begin_base(l);\r
for(int i=0; i<4; i++) {\r
l[i].data = data;\r
l[i].loop3();\r
}\r
end_base(l);\r
-\r
- for (int j = 0; j < Constants.LIMIT; j++)\r
- {\r
- r = itvl[j].end.val - itvl[j].begin.val;\r
- low = champ[j]-r/8.0 < itvl[j].begin.val ? itvl[j].begin.val : champ[j]-r/8.0;\r
- high = champ[j]+r/8.0 > itvl[j].end.val ? itvl[j].end.val : champ[j]+r/8.0;\r
- itvl[j] = new Interval(low, high);\r
- }\r
}\r
}\r
\r
\r
void begin_base(BinomialLikelihoodThread[] l)\r
{\r
+ champ_like = 0;\r
+\r
data.length = data.elems.GetLength(0);\r
for (int i = 0; i < data.elems.GetLength(0); i++)\r
{\r
}\r
}\r
\r
+ double r, low, high;\r
+ for (int j = 0; j < Constants.LIMIT; j++)\r
+ {\r
+ r = itvl[j].end.val - itvl[j].begin.val;\r
+ low = champ[j] - r / 8.0 < itvl[j].begin.val ? itvl[j].begin.val : champ[j] - r / 8.0;\r
+ high = champ[j] + r / 8.0 > itvl[j].end.val ? itvl[j].end.val : champ[j] + r / 8.0;\r
+ itvl[j] = new Interval(low, high);\r
+ }\r
+\r
}\r
\r
\r