DESCRIPTIVES: Fix a pair of memory leaks.
[pspp] / src / language / stats / jonckheere-terpstra.c
index 087f655b3d90af94682a8cb9a973d00b97e90722..796168a8eec87888a0ed4ee2ca554b699c6dd9d7 100644 (file)
@@ -122,7 +122,7 @@ u (const struct group_data *grp0, const struct group_data *grp1)
 #if 1
               usum += w0 * ( (grp1->cc - prev_cc1) / 2.0);
 #else
-              usum += w0 * (grp1->cc - (prev_cc1 + cc) / 2.0);
+              usum += w0 * (grp1->cc - (prev_cc1 + cc1) / 2.0);
 #endif
              case_unref (c1);
               break;
@@ -387,6 +387,8 @@ show_jt (const struct n_sample_test *nst, const struct jt *jt, const struct vari
 
   for (i = 0; i < nst->n_vars; ++i)
     {
+      double std_jt;
+
       tab_text (table, 0, i + row_headers, TAT_TITLE, 
                 var_to_string (nst->vars[i]) );
 
@@ -405,12 +407,12 @@ show_jt (const struct n_sample_test *nst, const struct jt *jt, const struct vari
       tab_double (table, 5, i + row_headers, TAT_TITLE, 
                   jt[0].stddev, 0);
 
-      double std_jt = (jt[0].obs - jt[0].mean) / jt[0].stddev;
+      std_jt = (jt[0].obs - jt[0].mean) / jt[0].stddev;
       tab_double (table, 6, i + row_headers, TAT_TITLE, 
                   std_jt, 0);
 
       tab_double (table, 7, i + row_headers, TAT_TITLE, 
-                  2.0 * gsl_cdf_ugaussian_P (std_jt), 0);
+                  2.0 * ((std_jt > 0) ? gsl_cdf_ugaussian_Q (std_jt) : gsl_cdf_ugaussian_P (std_jt)), 0);
     }
   
   tab_submit (table);