double gamma(double y) {
y -= 1;
double res = 0.0;
int i = 1;
double temp = 1.0;
double temp0 = 1.0;
double temp1 = 1.0;
temp = 1 / (y + 1);
do {
temp0 = temp * pow(i, y);
i++;
temp *= i / (y + i);
temp1 = temp * pow(i, y);
}while(abs(temp1 - temp0) > 0.00001);
res = temp1;
return res;
}