https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117874

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
For reference, mult_su3_na is almost the same:

typedef struct {
    double real;
    double imag;
} complex;
typedef struct { complex e[3][3]; } su3_matrix;
void mult_su3_na( su3_matrix *a, su3_matrix *b, su3_matrix *c )
{
  int i,j;
  double t,ar,ai,br,bi,cr,ci;
  for(i=0;i<3;i++)for(j=0;j<3;j++)
    {
      ar=a->e[i][0].real; ai=a->e[i][0].imag;
      br=b->e[j][0].real; bi=b->e[j][0].imag;
      cr=ar*br; t=ai*bi; cr += t;
      ci=ai*br; t=ar*bi; ci -= t;

      ar=a->e[i][1].real; ai=a->e[i][1].imag;
      br=b->e[j][1].real; bi=b->e[j][1].imag;
      t=ar*br; cr += t; t=ai*bi; cr += t;
      t=ar*bi; ci -= t; t=ai*br; ci += t;

      ar=a->e[i][2].real; ai=a->e[i][2].imag;
      br=b->e[j][2].real; bi=b->e[j][2].imag;
      t=ar*br; cr += t; t=ai*bi; cr += t;
      t=ar*bi; ci -= t; t=ai*br; ci += t;

      c->e[i][j].real=cr;
      c->e[i][j].imag=ci;
    }
}

Reply via email to