(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
pr64019.c
       1  /* { dg-do compile { target { powerpc*-*-* } } } */
       2  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
       3  /* { dg-require-effective-target powerpc_vsx_ok } */
       4  /* { dg-options "-O2 -ffast-math -mdejagnu-cpu=power7" } */
       5  
       6  #include <math.h>
       7  
       8  typedef struct
       9  {
      10    double x, y, z;
      11    double q, a, b, mass;
      12    double vx, vy, vz, vw, dx, dy, dz;
      13  }
      14  ATOM;
      15  int
      16  u_f_nonbon (lambda)
      17       double lambda;
      18  {
      19    double r, r0, xt, yt, zt;
      20    double lcutoff, cutoff, get_f_variable ();
      21    double rdebye;
      22    int inbond, inangle, i;
      23    ATOM *a1, *a2, *bonded[10], *angled[10];
      24    ATOM *(*use)[];
      25    int uselist (), nuse, used;
      26    ATOM *cp, *bp;
      27    int a_number (), inbuffer;
      28    double (*buffer)[], xx, yy, zz, k;
      29    int invector, atomsused, ii, jj, imax;
      30    double (*vector)[];
      31    ATOM *(*atms)[];
      32    double dielectric;
      33    rdebye = cutoff / 2.;
      34    dielectric = get_f_variable ("dielec");
      35    imax = a_number ();
      36    for (jj = 1; jj < imax; jj++, a1 = bp)
      37      {
      38        if ((*use)[used] == a1)
      39  	{
      40  	  used += 1;
      41  	}
      42        while ((*use)[used] != a1)
      43  	{
      44  	  for (i = 0; i < inbuffer; i++)
      45  	    {
      46  	    }
      47  	  xx = a1->x + lambda * a1->dx;
      48  	  yy = a1->y + lambda * a1->dy;
      49  	  zz = a1->z + lambda * a1->dz;
      50  	  for (i = 0; i < inbuffer; i++)
      51  	    {
      52  	      xt = xx - (*buffer)[3 * i];
      53  	      yt = yy - (*buffer)[3 * i + 1];
      54  	      zt = zz - (*buffer)[3 * i + 2];
      55  	      r = xt * xt + yt * yt + zt * zt;
      56  	      r0 = sqrt (r);
      57  	      xt = xt / r0;
      58  	      zt = zt / r0;
      59  	      k =
      60  		-a1->q * (*atms)[i]->q * dielectric * exp (-r0 / rdebye) *
      61  		(1. / (rdebye * r0) + 1. / r);
      62  	      k += a1->a * (*atms)[i]->a / r / r0 * 6;
      63  	      k -= a1->b * (*atms)[i]->b / r / r / r0 * 12;
      64  	      (*vector)[3 * i] = xt * k;
      65  	      (*vector)[3 * i + 1] = yt * k;
      66  	      (*vector)[3 * i + 2] = zt * k;
      67  	    }
      68  	}
      69      }
      70  }