/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2011,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2013,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "dens_filter.h"
-#include <math.h>
+#include <cmath>
#include "gromacs/legacyheaders/typedefs.h"
#include "gromacs/math/vec.h"
#include "gromacs/utility/smalloc.h"
-#ifdef GMX_DOUBLE
-#define EXP(x) (exp(x))
-#else
-#define EXP(x) (expf(x))
-#endif
-
-/* Modulo function assuming y>0 but with arbitrary INTEGER x */
-static int MOD(int x, int y)
-{
- if (x < 0)
- {
- x = x+y;
- }
- return (mod(x, y));
-}
-
-
gmx_bool convolution(int dataSize, real *x, int kernelSize, real* kernel)
{
int i, j, k;
gmx_bool periodic_convolution(int datasize, real *x, int kernelsize,
real *kernel)
{
- int i, j, k, nj;
+ int i, j, idx;
real *filtered;
if (!x || !kernel)
{
for (j = 0; (j < kernelsize); j++)
{
- filtered[i] += kernel[j]*x[MOD((i-j), datasize)];
+ // add datasize in case i-j is <0
+ idx = i-j + datasize;
+ filtered[i] += kernel[j]*x[idx % datasize];
}
}
for (i = 0; i < datasize; i++)
for (i = -k; i <= k; i++)
{
arg = (i*i)/(2*var);
- tot += out[j++] = EXP(-arg);
+ tot += out[j++] = std::exp(-arg);
}
for (i = 0; i < j; i++)
{