/* PSPP - a program for statistical analysis.
- Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#include <libpspp/compiler.h>
-#include <output/table.h>
-#include <data/format.h>
-#include <data/case.h>
-#include <data/casereader.h>
-#include <data/dictionary.h>
-#include <data/procedure.h>
-#include <data/variable.h>
-#include <data/value.h>
-#include <data/value-labels.h>
-
-#include <libpspp/message.h>
-#include <libpspp/assertion.h>
-
-#include "binomial.h"
-#include "freq.h"
-
-#include "xalloc.h"
-
-#include "gettext.h"
-#define _(msgid) gettext (msgid)
-
-#include <libpspp/misc.h>
+#include "language/stats/binomial.h"
#include <gsl/gsl_cdf.h>
#include <gsl/gsl_randist.h>
-#include <minmax.h>
+#include "data/case.h"
+#include "data/casereader.h"
+#include "data/dataset.h"
+#include "data/dictionary.h"
+#include "data/format.h"
+#include "data/value-labels.h"
+#include "data/value.h"
+#include "data/variable.h"
+#include "language/stats/freq.h"
+#include "libpspp/assertion.h"
+#include "libpspp/compiler.h"
+#include "libpspp/message.h"
+#include "libpspp/misc.h"
+#include "output/tab.h"
+
+#include "gl/xalloc.h"
+#include "gl/minmax.h"
-#include <libpspp/hash.h>
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
static double calculate_binomial_internal (double n1, double n2,
double p);
static bool
do_binomial (const struct dictionary *dict,
struct casereader *input,
- const struct binomial_test *bst,
- struct freq_mutable *cat1,
- struct freq_mutable *cat2,
+ const struct one_sample_test *ost,
+ struct freq *cat1,
+ struct freq *cat2,
enum mv_class exclude
)
{
+ const struct binomial_test *bst = UP_CAST (ost, const struct binomial_test, parent);
bool warn = true;
- const struct one_sample_test *ost = (const struct one_sample_test *) bst;
struct ccase *c;
for (; (c = casereader_read (input)) != NULL; case_unref (c))
{
int v;
const struct dictionary *dict = dataset_dict (ds);
- const struct binomial_test *bst = (const struct binomial_test *) test;
- const struct one_sample_test *ost = (const struct one_sample_test*) test;
+ const struct one_sample_test *ost = UP_CAST (test, const struct one_sample_test, parent);
+ const struct binomial_test *bst = UP_CAST (ost, const struct binomial_test, parent);
- struct freq_mutable *cat[2];
+ struct freq *cat[2];
int i;
assert ((bst->category1 == SYSMIS) == (bst->category2 == SYSMIS) || bst->cutpoint != SYSMIS);
}
}
- if (do_binomial (dataset_dict (ds), input, bst, cat[0], cat[1], exclude))
+ if (do_binomial (dataset_dict (ds), input, ost, cat[0], cat[1], exclude))
{
const struct variable *wvar = dict_get_weight (dict);
const struct fmt_spec *wfmt = wvar ?
var_get_print_format (wvar) : & F_8_0;
- struct tab_table *table = tab_create (7, ost->n_vars * 3 + 1, 0);
-
- tab_dim (table, tab_natural_dimensions, NULL, NULL);
+ struct tab_table *table = tab_create (7, ost->n_vars * 3 + 1);
tab_title (table, _("Binomial Test"));
tab_text (table, 4, 0, TAB_CENTER, _("Observed Prop."));
tab_text (table, 5, 0, TAB_CENTER, _("Test Prop."));
- tab_text (table, 6, 0, TAB_CENTER | TAT_PRINTF,
- _("Exact Sig. (%d-tailed)"),
- bst->p == 0.5 ? 2: 1);
+ tab_text_format (table, 6, 0, TAB_CENTER,
+ _("Exact Sig. (%d-tailed)"),
+ bst->p == 0.5 ? 2 : 1);
tab_vline (table, TAL_2, 2, 0, tab_nr (table) -1);
tab_submit (table);