math: Make 'accumulate' a feature of order statistics, not all stats.
[pspp] / src / math / shapiro-wilk.c
index f48156e97cfdd5605e36f98e9b00ebaa90971b7c..c2c8da6a9b363bb3b2740f5a954fc60ff83ad024 100644 (file)
@@ -26,7 +26,6 @@
 #include "libpspp/message.h"
 
 #include "gettext.h"
-#define _(msgid) gettext (msgid)
 #define N_(msgid) msgid
 
 /* Return the sum of coeff[i] * x^i for all i in the range [0,order).
@@ -116,7 +115,10 @@ shapiro_wilk_calculate (const struct shapiro_wilk *sw)
 struct shapiro_wilk *
 shapiro_wilk_create (int n, double mean)
 {
-  struct shapiro_wilk *sw = xzalloc (sizeof (*sw));
+  if (n < 3 || n > 5000)
+    return NULL;
+
+  struct shapiro_wilk *sw = XZALLOC (struct shapiro_wilk);
   struct order_stats *os = &sw->parent;
   struct statistic *stat = &os->parent;
 
@@ -128,9 +130,6 @@ shapiro_wilk_create (int n, double mean)
 
   sw->n = n;
 
-  if (n < 3 || n > 5000)
-    return NULL;
-
   const double u = 1.0 / sqrt (sw->n);
 
   double m = 0;
@@ -155,7 +154,7 @@ shapiro_wilk_create (int n, double mean)
 
   sw->warned = false;
 
-  stat->accumulate = acc;
+  os->accumulate = acc;
   stat->destroy = destroy;
 
   return sw;