double gauss (double z) { double res,a=0.5; double x=z*z/2; gammp(&a,&x,&res); res/=gamm(0.5)*2; if (z<0) return 0.5-res; else return 0.5+res; }
void objective_function_Choquet_coefficients(int *n, double *D) { int i, j, m; int pow = 1<<*n; m = 0; for (i=0; i<*n; i++) for (j=0; j<pow; j++) if(j & 1<<i) D[m++] = gamm(cardinal(j)-1, *n); }
void gammp (double *a, double *x, double *res) { if (*x < 0.0 || *a <= 0.0) { output("Invalid arguments in routine gammp\n"); error=1; return; } if (*x < (*a+1.0)) { *res=gser(*a,*x); return; } else { *res=gamm(*a)-gcf(*a,*x); return; } }