X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fnp.c;fp=src%2Fmath%2Fnp.c;h=dd21b1f3625bca10deab0a27dd45a1eff6d43c4f;hb=71f9b6d6c14525cd41ba77c9fd50aa13d0da830c;hp=220865ba3cbec59602ec9afccce2a6c193de813b;hpb=feb269112e14589474c0a75e96cd5a892d9aaeef;p=pspp diff --git a/src/math/np.c b/src/math/np.c index 220865ba3c..dd21b1f362 100644 --- a/src/math/np.c +++ b/src/math/np.c @@ -38,12 +38,10 @@ destroy (struct statistic *stat) free (np); } - static void acc (struct statistic *s, const struct ccase *cx UNUSED, double c, double cc, double y) { - struct ccase *cp; struct np *np = UP_CAST (s, struct np, parent.parent); double rank = np->prev_cc + (c + 1) / 2.0; @@ -62,7 +60,7 @@ acc (struct statistic *s, const struct ccase *cx UNUSED, maximize (&np->y_max, y); minimize (&np->y_min, y); - cp = case_create (casewriter_get_proto (np->writer)); + struct ccase *cp = case_create (casewriter_get_proto (np->writer)); *case_num_rw_idx (cp, NP_IDX_Y) = y; *case_num_rw_idx (cp, NP_IDX_NS) = ns; *case_num_rw_idx (cp, NP_IDX_DNS) = dns; @@ -85,31 +83,30 @@ acc (struct statistic *s, const struct ccase *cx UNUSED, struct np * np_create (double n, double mean, double var) { - struct np *np = XZALLOC (struct np); - struct order_stats *os = &np->parent; - struct statistic *stat = &os->parent; - struct caseproto *proto; - int i; - - np->prev_cc = 0; - - np->n = n; - np->mean = mean; - - np->stddev = sqrt (var); - - np->y_min = np->ns_min = np->dns_min = DBL_MAX; - np->y_max = np->ns_max = np->dns_max = -DBL_MAX; - - proto = caseproto_create (); - for (i = 0; i < n_NP_IDX; i++) + struct caseproto *proto = caseproto_create (); + for (size_t i = 0; i < n_NP_IDX; i++) proto = caseproto_add_width (proto, 0); - np->writer = autopaging_writer_create (proto); + struct casewriter *writer = autopaging_writer_create (proto); caseproto_unref (proto); - os->k = 0; - stat->destroy = destroy; - stat->accumulate = acc; - + struct np *np = xmalloc (sizeof *np); + *np = (struct np) { + .parent = { + .parent = { + .accumulate = acc, + .destroy = destroy, + }, + }, + .n = n, + .mean = mean, + .stddev = sqrt (var), + .ns_min = DBL_MAX, + .ns_max = -DBL_MAX, + .dns_min = DBL_MAX, + .dns_max = -DBL_MAX, + .y_min = DBL_MAX, + .y_max = -DBL_MAX, + .writer = writer, + }; return np; }