Kaydet (Commit) d8afb553 authored tarafından zhenyu yuan's avatar zhenyu yuan Kaydeden (comit) I-Jui (Ray) Sung

GPU Calc: Optimized COMBINA

AMLOEXT-259

Change-Id: I8c5330a92ff0065bf9f51ea374b8aa686fdebc3c
Signed-off-by: 's avatarhaochen <haochen@multicorewareinc.com>
Signed-off-by: 's avatarWei Wei <weiwei@multicorewareinc.com>
Signed-off-by: 's avatarI-Jui (Ray) Sung <ray@multicorewareinc.com>
üst 4873228b
...@@ -200,19 +200,19 @@ void OpCombina::GenSlidingWindowFunction(std::stringstream &ss, ...@@ -200,19 +200,19 @@ void OpCombina::GenSlidingWindowFunction(std::stringstream &ss,
} }
ss << " arg0 = trunc(arg0);\n"; ss << " arg0 = trunc(arg0);\n";
ss << " arg1 = trunc(arg1);\n"; ss << " arg1 = trunc(arg1);\n";
ss << " if(arg0 < arg1 || arg0 < 0 || arg1 < 0)\n"; ss << " if(arg0 >= arg1 && arg0 > 0 && arg1 > 0)\n";
ss << " tem = -1;\n"; ss << " tem = bik(arg0+arg1-1,arg1);\n";
ss << " else if(arg0 == 0 && arg1 == 0)\n"; ss << " else if(arg0 == 0 && arg1 == 0)\n";
ss << " tem = 0;\n"; ss << " tem = 0;\n";
ss << " else if(arg0 > 0 && arg1 == 0)\n"; ss << " else if(arg0 > 0 && arg1 == 0)\n";
ss << " tem = 1;\n"; ss << " tem = 1;\n";
ss << " else\n"; ss << " else\n";
ss << " tem = bik(arg0+arg1-1,arg1);\n"; ss << " tem = -1;\n";
ss << " double k = tem - trunc(tem);\n"; ss << " double i = tem - trunc(tem);\n";
ss << " if(k < 0.5)\n"; ss << " if(i < 0.5)\n";
ss << " tem = trunc(tem);\n"; ss << " tem = trunc(tem);\n";
ss << " else\n"; ss << " else\n";
ss << " tem = trunc(tem) + 1;"; ss << " tem = trunc(tem) + 1;\n";
ss << " return tem;\n"; ss << " return tem;\n";
ss << "}"; ss << "}";
} }
......
...@@ -25,16 +25,18 @@ std::string bikDecl = "double bik(double n,double k);\n"; ...@@ -25,16 +25,18 @@ std::string bikDecl = "double bik(double n,double k);\n";
std::string bik = std::string bik =
"double bik(double n,double k)\n" "double bik(double n,double k)\n"
"{\n" "{\n"
" double nVal = n/k;\n" " double nVal1 = n;\n"
" double nVal2 = k;\n"
" n = n - 1;\n" " n = n - 1;\n"
" k = k - 1;\n" " k = k - 1;\n"
" while (k > 0)\n" " while (k > 0)\n"
" {\n" " {\n"
" nVal = nVal * ( n/k );\n" " nVal1 = nVal1 * n;\n"
" nVal2 = nVal2 * k;\n"
" k = k - 1;\n" " k = k - 1;\n"
" n = n - 1;\n" " n = n - 1;\n"
" }\n" " }\n"
" return nVal;\n" " return (nVal1 / nVal2);\n"
"}\n"; "}\n";
std::string local_cothDecl = "double local_coth(double n);\n"; std::string local_cothDecl = "double local_coth(double n);\n";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment