math: Avoid unneeded extra allocations for fixed-size data structures.
[pspp] / src / math / tukey-hinges.c
index 3e9ea9374eb4198b76d83688234b23de97fc7cf9..b59b878ba64991c2bea385553e24c8e058ab8c2e 100644 (file)
@@ -41,7 +41,7 @@ tukey_hinges_calculate (const struct tukey_hinges *th, double hinge[3])
 
       if (a_star[i] < 1)
        {
-         if (os->k[i].c_p1 >= 1 )
+         if (os->k[i].c_p1 >= 1)
            {
              hinge[i] = (1 - a_star[i]) * os->k[i].y
                + a_star[i] * os->k[i].y_p1;
@@ -64,26 +64,23 @@ static void
 destroy (struct statistic *s)
 {
   struct tukey_hinges *th = UP_CAST (s, struct tukey_hinges, parent.parent);
-  struct order_stats *os = &th->parent;
-
-  free (os->k);
-  free (s);
+  free (th);
 };
 
 struct tukey_hinges *
 tukey_hinges_create (double W, double c_min)
 {
   double d;
-  struct tukey_hinges *th = xzalloc (sizeof (*th));
+  struct tukey_hinges *th = XZALLOC (struct tukey_hinges);
   struct order_stats *os = &th->parent;
   struct statistic *stat = &os->parent;
 
   assert (c_min >= 0);
 
   os->n_k = 3;
-  os->k = xcalloc (sizeof (*os->k), 3);
+  os->k = th->k;
 
-  if ( c_min >= 1.0)
+  if (c_min >= 1.0)
     {
       d = floor ((W + 3) / 2.0) / 2.0;