X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fwilcoxon.c;h=e1fb14f01506035d40bcee4f37a9afd17f4788c9;hb=4d777aeacfa602840718862c31c9059e3d289eed;hp=0d86bd6c31ad0840ea725a6f626f00c693fa1611;hpb=96994a54e60e9c95b8bba54c2281acf7059b1203;p=pspp diff --git a/src/language/stats/wilcoxon.c b/src/language/stats/wilcoxon.c index 0d86bd6c31..e1fb14f015 100644 --- a/src/language/stats/wilcoxon.c +++ b/src/language/stats/wilcoxon.c @@ -49,7 +49,7 @@ append_difference (const struct ccase *c, casenumber n UNUSED, void *aux) { const variable_pair *vp = aux; - return case_data (c, (*vp)[0])->f - case_data (c, (*vp)[1])->f; + return case_num (c, (*vp)[0]) - case_num (c, (*vp)[1]); } static void show_ranks_box (const struct wilcoxon_state *, @@ -85,7 +85,7 @@ wilcoxon_execute (const struct dataset *ds, const struct dictionary *dict = dataset_dict (ds); const struct two_sample_test *t2s = UP_CAST (test, const struct two_sample_test, parent); - struct wilcoxon_state *ws = xcalloc (t2s->n_pairs, sizeof *ws); + struct wilcoxon_state *ws = XCALLOC (t2s->n_pairs, struct wilcoxon_state); const struct variable *weight = dict_get_weight (dict); struct variable *weightx = dict_create_internal_var (WEIGHT_IDX, 0); struct caseproto *proto; @@ -116,7 +116,7 @@ wilcoxon_execute (const struct dataset *ds, subcase_init_var (&ordering, ws[i].absdiff, SC_ASCEND); writer = sort_create_writer (&ordering, proto); - subcase_destroy (&ordering); + subcase_uninit (&ordering); for (; (c = casereader_read (r)) != NULL; case_unref (c)) { @@ -124,19 +124,14 @@ wilcoxon_execute (const struct dataset *ds, double d = append_difference (c, 0, vp); if (d > 0) - { - case_data_rw (output, ws[i].sign)->f = 1.0; - - } + *case_num_rw (output, ws[i].sign) = 1.0; else if (d < 0) - { - case_data_rw (output, ws[i].sign)->f = -1.0; - } + *case_num_rw (output, ws[i].sign) = -1.0; else { double w = 1.0; if (weight) - w = case_data (c, weight)->f; + w = case_num (c, weight); /* Central point values should be dropped */ ws[i].n_zeros += w; @@ -144,10 +139,10 @@ wilcoxon_execute (const struct dataset *ds, continue; } - case_data_rw (output, ws[i].absdiff)->f = fabs (d); + *case_num_rw (output, ws[i].absdiff) = fabs (d); if (weight) - case_data_rw (output, weightx)->f = case_data (c, weight)->f; + *case_num_rw (output, weightx) = case_num (c, weight); casewriter_write (writer, output); } @@ -169,11 +164,9 @@ wilcoxon_execute (const struct dataset *ds, for (; (c = casereader_read (rr)) != NULL; case_unref (c)) { - double sign = case_data (c, ws[i].sign)->f; - double rank = case_data_idx (c, weight ? 3 : 2)->f; - double w = 1.0; - if (weight) - w = case_data (c, weightx)->f; + double sign = case_num (c, ws[i].sign); + double rank = case_num_idx (c, weight ? 3 : 2); + double w = weight ? case_num (c, weightx) : 1.0; if (sign > 0) {