#include <data/case.h>
#include <data/casewriter.h>
#include <libpspp/compiler.h>
+#include <libpspp/cast.h>
#include <libpspp/misc.h>
#include <math/moments.h>
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);
}
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 ));
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;
stat->destroy = destroy;
stat->accumulate = acc;
- return os;
+ return np;
}