#define M 100
#define N 150
float akep[M][N], bkep[M][N];
void gauss(double fwhm)
{
int i, j, k;
double a, b, c, d;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
a = b = 0.0;
for (k = 0; k < N; k++) {
d = (j - k);
c = -0.5 * d * d / (fwhm * fwhm);
if (d > -9.0) {
c = exp(c);
a += c * akep[i][k];
b += c;
}
}
bkep[i][j] = a/b;
}
}
for (j = 0; j < N; j++) {
for (i = 0; i < M; i++) {
a = b = 0.0;
for (k = 0; k < M; k++) {
d = (i - k);
c = -0.5 * d * d / (fwhm * fwhm);
if (d > -9.0) {
c = exp(c);
a += c * bkep[k][j];
b += c;
}
}
akep[i][j] = a/b;
}
}
}