-SCORE SumLogFast(SCORE x, SCORE y)\r
- {\r
- if (MINUS_INFINITY == x)\r
- {\r
- if (MINUS_INFINITY == y)\r
- return MINUS_INFINITY;\r
- return y;\r
- }\r
- else if (MINUS_INFINITY == y)\r
- return x;\r
-\r
- SCORE dResult;\r
- if (x > y)\r
- dResult = x + lp2Fast(x-y);\r
- else\r
- dResult = y + lp2Fast(y-x);\r
- assert(SumLog(x, y) == dResult);\r
- return dResult;\r
- }\r
-\r
-SCORE SumLogFast(SCORE x, SCORE y, SCORE z)\r
- {\r
- SCORE dResult = SumLogFast(x, SumLogFast(y, z));\r
- assert(SumLog(x, y, z) == dResult);\r
- return dResult;\r
- }\r
-\r
-SCORE SumLogFast(SCORE w, SCORE x, SCORE y, SCORE z)\r
- {\r
- SCORE dResult = SumLogFast(SumLogFast(w, x), SumLogFast(y, z));\r
- assert(SumLog(w, x, y, z) == dResult);\r
- return dResult;\r
- }\r
+//SCORE SumLog(SCORE x, SCORE y)\r
+// {\r
+// return (SCORE) log2(pow2(x) + pow2(y));\r
+// }\r
+//\r
+//// SumLog(x, y, z) = log2(2^x + 2^y + 2^z)\r
+//SCORE SumLog(SCORE x, SCORE y, SCORE z)\r
+// {\r
+// return (SCORE) log2(pow2(x) + pow2(y) + pow2(z));\r
+// }\r
+//\r
+//// SumLog(w, x, y, z) = log2(2^w + 2^x + 2^y + 2^z)\r
+//SCORE SumLog(SCORE w, SCORE x, SCORE y, SCORE z)\r
+// {\r
+// return (SCORE) log2(pow2(w) + pow2(x) + pow2(y) + pow2(z));\r
+// }\r
+\r
+//SCORE lp2Fast(SCORE x)\r
+// {\r
+// assert(x >= 0);\r
+// const int iTableSize = 1000;\r
+// const double dRange = 20.0;\r
+// const double dScale = dRange/iTableSize;\r
+// static SCORE dValue[iTableSize];\r
+// static bool bInit = false;\r
+// if (!bInit)\r
+// {\r
+// for (int i = 0; i < iTableSize; ++i)\r
+// dValue[i] = (SCORE) lp2(i*dScale);\r
+// bInit = true;\r
+// }\r
+// if (x >= dRange)\r
+// return 0.0;\r
+// int i = (int) (x/dScale);\r
+// assert(i >= 0 && i < iTableSize);\r
+// SCORE dResult = dValue[i];\r
+// assert(BTEq(dResult, lp2(x)));\r
+// return dResult;\r
+// }\r
+//\r
+//// SumLog(x, y) = log2(2^x + 2^y)\r
+//SCORE SumLogFast(SCORE x, SCORE y)\r
+// {\r
+// if (MINUS_INFINITY == x)\r
+// {\r
+// if (MINUS_INFINITY == y)\r
+// return MINUS_INFINITY;\r
+// return y;\r
+// }\r
+// else if (MINUS_INFINITY == y)\r
+// return x;\r
+//\r
+// SCORE dResult;\r
+// if (x > y)\r
+// dResult = x + lp2Fast(x-y);\r
+// else\r
+// dResult = y + lp2Fast(y-x);\r
+// assert(SumLog(x, y) == dResult);\r
+// return dResult;\r
+// }\r
+//\r
+//SCORE SumLogFast(SCORE x, SCORE y, SCORE z)\r
+// {\r
+// SCORE dResult = SumLogFast(x, SumLogFast(y, z));\r
+// assert(SumLog(x, y, z) == dResult);\r
+// return dResult;\r
+// }\r
+\r
+//SCORE SumLogFast(SCORE w, SCORE x, SCORE y, SCORE z)\r
+// {\r
+// SCORE dResult = SumLogFast(SumLogFast(w, x), SumLogFast(y, z));\r
+// assert(SumLog(w, x, y, z) == dResult);\r
+// return dResult;\r
+// }\r