shapiroe.c 556 B

12345678910111213141516171819202122232425262728293031
  1. #include <stdio.h>
  2. #include <math.h>
  3. double *Cdhc_shapiro_wilk_exp(double *x, int n)
  4. {
  5. static double y[2];
  6. double mean, b, s1, xs, sum1 = 0.0, sum2 = 0.0;
  7. int i;
  8. for (i = 0; i < n; ++i)
  9. if (i == 0 || xs > x[i])
  10. xs = x[i];
  11. for (i = 0; i < n; ++i) {
  12. sum1 += x[i];
  13. sum2 += x[i] * x[i];
  14. }
  15. s1 = sum2 - sum1 * sum1 / n;
  16. mean = sum1 / n;
  17. b = (mean - xs) * sqrt((double)n / (n - 1.0));
  18. y[0] = b * b / s1;
  19. #ifdef NOISY
  20. fprintf(stdout, " TEST15 SW(E) =%10.4f\n", y[0]);
  21. #endif /* NOISY */
  22. return y;
  23. }