274 #pragma unroll
275 for (int i = 0; i < 50; i++)
276 {
277 lambda_old = lambda;
278 lambda2 = lambda_old * lambda_old;// lambda^2
279 b = (lambda2 + C_2) * lambda_old; // b = lambda_old^3 + C_2*lambda_old
280 a = b + C_1; // a = lambda_old^3 + C_2*lambda_old + C_1
281 lambda = lambda_old - (a * lambda_old + C_0) / (2.0 * lambda2 * lambda_old + b + a);
282 // = lambda_old - lambda_old^4 + C_2*lambda_old^2 + C_1*lambda_old + C_0
283 // ------------------------------------------------------
284 // 4 * lambda^3 + 2 C_2*lambda^2 + C_1
285 if (fabs(lambda - lambda_old) < fabs(1.0e-6 * lambda)) break;
286 }
For some reason all the automatic variables (lambda_old, lambda, lambda2, b, a) are spilled into local memory. Any idea why?