Commit 3c16ceff authored by Peter Eastman's avatar Peter Eastman
Browse files

Fixed bug in evaluating tabulated functions

parent a6370f58
...@@ -114,7 +114,7 @@ __device__ float kEvaluateExpression_kernel(Expression<SIZE>* expression, float* ...@@ -114,7 +114,7 @@ __device__ float kEvaluateExpression_kernel(Expression<SIZE>* expression, float*
if (op == CUSTOM) if (op == CUSTOM)
STACK(stackPointer) = a*coeff.x+b*coeff.y+((a*a*a-a)*coeff.z+(b*b*b-b)*coeff.w)/(params.z*params.z); STACK(stackPointer) = a*coeff.x+b*coeff.y+((a*a*a-a)*coeff.z+(b*b*b-b)*coeff.w)/(params.z*params.z);
else else
STACK(stackPointer) = (coeff.y-coeff.x)*params.z-((3.0f*a*a-1.0f)*coeff.z+(4.0f*b*b-1.0f)*coeff.w)/params.z; STACK(stackPointer) = (coeff.y-coeff.x)*params.z+((1.0f-3.0f*a*a)*coeff.z+(3.0f*b*b-1.0f)*coeff.w)/params.z;
} }
} }
} }
......
...@@ -130,7 +130,7 @@ void OpenCLExpressionUtilities::processExpression(stringstream& out, const Expre ...@@ -130,7 +130,7 @@ void OpenCLExpressionUtilities::processExpression(stringstream& out, const Expre
if (valueNode != NULL) if (valueNode != NULL)
out << valueName << " = a*coeff.x+b*coeff.y+((a*a*a-a)*coeff.z+(b*b*b-b)*coeff.w)/(params.z*params.z);\n"; out << valueName << " = a*coeff.x+b*coeff.y+((a*a*a-a)*coeff.z+(b*b*b-b)*coeff.w)/(params.z*params.z);\n";
if (derivNode != NULL) if (derivNode != NULL)
out << derivName << " = (coeff.y-coeff.x)*params.z-((3.0f*a*a-1.0f)*coeff.z+(4.0f*b*b-1.0f)*coeff.w)/params.z;\n"; out << derivName << " = (coeff.y-coeff.x)*params.z+((1.0f-3.0f*a*a)*coeff.z+(3.0f*b*b-1.0f)*coeff.w)/params.z;\n";
out << "}\n"; out << "}\n";
out << "}"; out << "}";
break; break;
......
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