------- Comment #2 from rguenth at gcc dot gnu dot org  2009-04-04 09:05 -------
Reduced testcase:

typedef float real;
typedef real rvec[3];
real phi_sr(int nj,rvec x[],real charge[],real rc,real r1,rvec box,
            real phi[],rvec f_sr[],int bOld)
{
  int i,j,k,m,ni,i1,i2;
  real pp,r2,R,R_1,R_2,rc2;
  real qi,qj,vsr,eps,fscal;
  rvec dx;
  for(i=0; (i<nj-1); i++)
    {
      for(j=i+1; (j<nj); j++)
        {
          if (k == i2)
            {
              r2=calc_dx2dx(x[i],x[j],box,dx);
              if (r2 < rc2)
                {
                  qj = charge[j];
                  R_1 = (1.0f/sqrt(r2));
                  R_2 = R_1*R_1;
                  R = (1.0f/sqrt(R_2));
                  if (bOld)
                    {
                      fscal = old_f(R,rc,r1)*R_2;
                      pp = old_phi(R,rc,r1);
                    }
                  else
                    {
                      fscal = new_f(R,rc)*R_2;
                      pp = new_phi(R,rc);
                    }
                  phi[i] += eps*qj*pp;
                  phi[j] += eps*qi*pp;
                  vsr += eps*qj*qi*pp;
                  for(m=0; (m<3); m++)
                    {
                      f_sr[i][m] += dx[m]*fscal;
                      f_sr[j][m] -= dx[m]*fscal;
                    }
                  ni++;
                }
            }
        }
    }
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39636

Reply via email to