/* { dg-do compile } */ /* { dg-additional-options "-mavx2" { target x86_64-*-* i?86-*-* } } */ typedef float real; typedef struct { int ngtc; real *ref_t; real *tau_t; } t_grpopts; typedef struct { real T; real xi; } t_grp_tcstat; typedef struct { t_grp_tcstat *tcstat; } t_groups; extern real *save_calloc (); void nosehoover_tcoupl (t_grpopts * opts, t_groups * grps, real dt, real SAfactor) { static real *Qinv = ((void *) 0); int i; real reft = 0, xit, oldxi; if (Qinv == ((void *) 0)) { (Qinv) = save_calloc ("Qinv", "coupling.c", 372, (opts->ngtc), sizeof (*(Qinv))); for (i = 0; i < opts->ngtc; i++) if ((opts->tau_t[i] > 0)) Qinv[i] = 1.0 / opts->tau_t[i]; } for (i = 0; (i < opts->ngtc); i++) { reft = (((0.0) > (opts->ref_t[i] * SAfactor)) ? (0.0) : (opts->ref_t[i] * SAfactor)); grps->tcstat[i].xi += dt * Qinv[i] * (grps->tcstat[i].T - reft); } }