Fix an Intel compiler error in covariance_impl.cc.

Intel C compiler strictly asks for parallel loops with collapse to be
perfectly nested. Otherwise, compiling Ceres with ICC will throw an
error at line 348 of covariance_impl.cc.

Change-Id: I1ecb68e89b7faf79e4153dfe6675c390d1780db4
diff --git a/internal/ceres/covariance_impl.cc b/internal/ceres/covariance_impl.cc
index 0fa40ce..d698f88 100644
--- a/internal/ceres/covariance_impl.cc
+++ b/internal/ceres/covariance_impl.cc
@@ -309,12 +309,13 @@
 
   const ProblemImpl::ParameterMap& parameter_map = problem_->parameter_map();
   // For OpenMP compatibility we need to define these vectors in advance
+  const int num_parameters = parameters.size();
   vector<int> parameter_sizes;
   vector<int> cum_parameter_size;
-  parameter_sizes.reserve(parameters.size());
-  cum_parameter_size.resize(parameters.size() + 1);
+  parameter_sizes.reserve(num_parameters);
+  cum_parameter_size.resize(num_parameters + 1);
   cum_parameter_size[0] = 0;
-  for (int i = 0; i < parameters.size(); ++i) {
+  for (int i = 0; i < num_parameters; ++i) {
     ParameterBlock* block =
         FindOrDie(parameter_map, const_cast<double*>(parameters[i]));
     if (lift_covariance_to_ambient_space) {
@@ -345,8 +346,8 @@
 #else
 #  pragma omp parallel for num_threads(num_threads) schedule(dynamic)
 #endif
-  for (int i = 0; i < parameters.size(); ++i) {
-    for (int j = 0; j < parameters.size(); ++j) {
+  for (int i = 0; i < num_parameters; ++i) {
+    for (int j = 0; j < num_parameters; ++j) {
       // The second loop can't start from j = i for compatibility with OpenMP
       // collapse command. The conditional serves as a workaround
       if (j >= i) {