const float c[] = {...};
const float dx = c[0] + c[1] * x + c[2] * powf( x, 2.0f) .... + c[8] * powf( x, 8.0f);

と、

const float c[] = {...};
float dx = 0.0f, xx = 1.0f;
for( uint i = 1; i <= 8; ++i, xx*=x) dx += (float)i * c[i] * xx;

ではコンパイラの最適化に違いは出るのかな?