X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fnp.c;h=b631820903e6ebf4e41a536ebe7ea964924af918;hb=94a7e63351c5eb4fe0d0507dfe4537ece935d134;hp=e61bf58e117aaf915d596bc26b8875152f0f0deb;hpb=3bbb4370239deb29ebbf813d258aef6249e2a431;p=pspp-builds.git diff --git a/src/math/np.c b/src/math/np.c index e61bf58e..b6318209 100644 --- a/src/math/np.c +++ b/src/math/np.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -32,8 +33,8 @@ static void destroy (struct statistic *stat) { - struct order_stats *os = (struct order_stats *) stat; - free (os); + struct np *np = UP_CAST (stat, struct np, parent.parent); + free (np); } @@ -42,7 +43,7 @@ acc (struct statistic *s, const struct ccase *cx UNUSED, double c, double cc, double y) { struct ccase *cp; - struct np *np = (struct np *) s; + struct np *np = UP_CAST (s, struct np, parent.parent); double rank = np->prev_cc + (c + 1) / 2.0; double ns = gsl_cdf_ugaussian_Pinv (rank / ( np->n + 1 )); @@ -69,13 +70,13 @@ acc (struct statistic *s, const struct ccase *cx UNUSED, np->prev_cc = cc; } -struct order_stats * +struct np * np_create (const struct moments1 *m) { double variance; struct np *np = xzalloc (sizeof (*np)); - struct statistic *stat = (struct statistic *) np; - struct order_stats *os = (struct order_stats *) np; + struct order_stats *os = &np->parent; + struct statistic *stat = &os->parent; struct caseproto *proto; int i; @@ -98,5 +99,5 @@ np_create (const struct moments1 *m) stat->destroy = destroy; stat->accumulate = acc; - return os; + return np; }