(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr104152.c
       1  /* { dg-do compile } */
       2  /* { dg-additional-options "-Ofast" } */
       3  /* { dg-additional-options "-march=armv8.2-a+sve" { target aarch64-*-* } } */
       4  
       5  #define M_PI 3.14f
       6  #define NK 24
       7  #define DIM 3
       8  
       9  typedef float rvec_ [3];
      10  
      11  static rvec_ v0[NK] = {
      12        { 1, 0, 0 },  { 0, 1, 0 },  { 0, 0, 1 },  { 1, 1, 0 },  { 1, -1, 0 },
      13        { 1, 0, 1 },  { 1, 0, -1 }, { 0, 1, 1 },  { 0, 1, -1 }, { 1, 1, 1 },
      14        { 1, 1, -1 }, { 1, -1, 1 }, { -1, 1, 1 }, { 2, 0, 0 },  { 0, 2, 0 },
      15        { 0, 0, 2 },  { 3, 0, 0 },  { 0, 3, 0 },  { 0, 0, 3 },  { 4, 0, 0 },
      16        { 0, 4, 0 },  { 0, 0, 4 } };
      17  
      18  static inline float iprod__(const rvec_ a, const rvec_ b)
      19  {
      20    return (a[0] * b[0] + a[1] * b[1] + a[2] * b[2]);
      21  }
      22  
      23  int badaboum(rvec_ cm_mol, float **tc)
      24  {
      25    float              sx;
      26    int                k, d;
      27    rvec_              kfac[3];
      28  
      29    for (k = 0; k < DIM; k++)
      30      for (d = 0; d < DIM; d++)
      31        kfac[k][d] = M_PI * v0[k][d] / v0[d][d];
      32  
      33    for (k = 0; k < DIM; k++)
      34      {
      35        sx = __builtin_sinf(iprod__(kfac[k], cm_mol));
      36        tc[k][0] += sx * iprod__(v0[k], cm_mol);
      37      }
      38  
      39    return 0;
      40  }