[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp doc/statistics.texi src/language/stats/Cha...
From: |
Ben Pfaff |
Subject: |
[Pspp-cvs] pspp doc/statistics.texi src/language/stats/Cha... |
Date: |
Wed, 01 Aug 2007 03:33:15 +0000 |
CVSROOT: /cvsroot/pspp
Module name: pspp
Changes by: Ben Pfaff <blp> 07/08/01 03:33:15
Modified files:
doc : statistics.texi
src/language/stats: ChangeLog frequencies.q
Log message:
Remove integer mode from FREQUENCIES and incidentally fix bug
#17421. Reviewed by John Darrington.
* frequencies.q (int_pool): Rename data_pool.
(gen_pool): Rename syntax_pool.
(enum FRQM_*): Removed.
(struct freq_tab): Removed `mode', `vector', `min', `max',
`out_of_range', `sysmis' members.
(calc): Delete support for integer mode.
(precalc): Ditto.
(postprocess_freq_tab): Ditto.
(cleanup_freq_tab): Ditto.
(frq_custom_variables): Ditto.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/doc/statistics.texi?cvsroot=pspp&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/ChangeLog?cvsroot=pspp&r1=1.57&r2=1.58
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/frequencies.q?cvsroot=pspp&r1=1.33&r2=1.34
Patches:
Index: doc/statistics.texi
===================================================================
RCS file: /cvsroot/pspp/pspp/doc/statistics.texi,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- doc/statistics.texi 28 Jul 2007 00:40:52 -0000 1.17
+++ doc/statistics.texi 1 Aug 2007 03:33:15 -0000 1.18
@@ -133,9 +133,6 @@
/address@hidden
/address@hidden
/address@hidden
-
-(Integer mode.)
- /VARIABLES=var_list (low,high)@dots{}
@end display
The @cmd{FREQUENCIES} procedure outputs frequency tables for specified
@@ -148,16 +145,7 @@
bar charts and output percentiles for grouped data.
The VARIABLES subcommand is the only required subcommand. Specify the
-variables to be analyzed. In most cases, this is all that is required.
-This is known as @dfn{general mode}.
-
-Occasionally, one may want to invoke a special mode called @dfn{integer
-mode}. Normally, in general mode, PSPP will automatically determine
-what values occur in the data. In integer mode, the user specifies the
-range of values that the data assumes. To invoke this mode, specify a
-range of data values in parentheses, separated by a comma. Data values
-inside the range are truncated to the nearest integer, then assigned to
-that value. If values occur outside this range, they are discarded.
+variables to be analyzed.
The FORMAT subcommand controls the output format. It has several
possible settings:
Index: src/language/stats/ChangeLog
===================================================================
RCS file: /cvsroot/pspp/pspp/src/language/stats/ChangeLog,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- src/language/stats/ChangeLog 28 Jul 2007 00:40:52 -0000 1.57
+++ src/language/stats/ChangeLog 1 Aug 2007 03:33:15 -0000 1.58
@@ -1,3 +1,18 @@
+2007-07-31 Ben Pfaff <address@hidden>
+
+ Remove integer mode from FREQUENCIES and incidentally fix bug
+ #17421. Reviewed by John Darrington.
+ * frequencies.q (int_pool): Rename data_pool.
+ (gen_pool): Rename syntax_pool.
+ (enum FRQM_*): Removed.
+ (struct freq_tab): Removed `mode', `vector', `min', `max',
+ `out_of_range', `sysmis' members.
+ (calc): Delete support for integer mode.
+ (precalc): Ditto.
+ (postprocess_freq_tab): Ditto.
+ (cleanup_freq_tab): Ditto.
+ (frq_custom_variables): Ditto.
+
2007-07-28 John Darrington <address@hidden>
* t-test.q: Moved the order in which groups are displayed in the
Index: src/language/stats/frequencies.q
===================================================================
RCS file: /cvsroot/pspp/pspp/src/language/stats/frequencies.q,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- src/language/stats/frequencies.q 7 Jul 2007 06:14:17 -0000 1.33
+++ src/language/stats/frequencies.q 1 Aug 2007 03:33:15 -0000 1.34
@@ -1,5 +1,5 @@
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2007 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
@@ -198,34 +198,16 @@
static size_t n_variables;
static const struct variable **v_variables;
-/* Arenas used to store semi-permanent storage. */
-static struct pool *int_pool; /* Integer mode. */
-static struct pool *gen_pool; /* General mode. */
+/* Pools. */
+static struct pool *data_pool; /* For per-SPLIT FILE group data. */
+static struct pool *syntax_pool; /* For syntax-related data. */
/* Frequency tables. */
-/* Types of frequency tables. */
-enum
- {
- FRQM_GENERAL,
- FRQM_INTEGER
- };
-
/* Entire frequency table. */
struct freq_tab
{
- int mode; /* FRQM_GENERAL or FRQM_INTEGER. */
-
- /* General mode. */
struct hsh_table *data; /* Undifferentiated data. */
-
- /* Integer mode. */
- double *vector; /* Frequencies proper. */
- int min, max; /* The boundaries of the table. */
- double out_of_range; /* Sum of weights of out-of-range values. */
- double sysmis; /* Sum of weights of SYSMIS values. */
-
- /* All modes. */
struct freq *valid; /* Valid freqs. */
int n_valid; /* Number of total freqs. */
@@ -303,12 +285,12 @@
{
int result;
- int_pool = pool_create ();
+ syntax_pool = pool_create ();
result = internal_cmd_frequencies (lexer, ds);
- pool_destroy (int_pool);
- int_pool=0;
- pool_destroy (gen_pool);
- gen_pool=0;
+ pool_destroy (syntax_pool);
+ syntax_pool=0;
+ pool_destroy (data_pool);
+ data_pool=0;
free (v_variables);
v_variables=0;
return result;
@@ -524,11 +506,6 @@
struct var_freqs *vf = get_var_freqs (v);
struct freq_tab *ft = &vf->tab;
- switch (ft->mode)
- {
- case FRQM_GENERAL:
- {
- /* General mode. */
struct freq target;
struct freq **fpp;
@@ -539,32 +516,14 @@
(*fpp)->count += weight;
else
{
- struct freq *fp = pool_alloc (gen_pool, sizeof *fp);
+ struct freq *fp = pool_alloc (data_pool, sizeof *fp);
fp->count = weight;
- fp->value = pool_clone (gen_pool,
+ fp->value = pool_clone (data_pool,
val,
MAX (MAX_SHORT_STRING, vf->width));
*fpp = fp;
}
}
- break;
- case FRQM_INTEGER:
- /* Integer mode. */
- if (val->f == SYSMIS)
- ft->sysmis += weight;
- else if (val->f > INT_MIN+1 && val->f < INT_MAX-1)
- {
- int i = val->f;
- if (i >= ft->min && i <= ft->max)
- ft->vector[i - ft->min] += weight;
- }
- else
- ft->out_of_range += weight;
- break;
- default:
- NOT_REACHED ();
- }
- }
}
/* Prepares each variable that is the target of FREQUENCIES by setting
@@ -580,28 +539,16 @@
output_split_file_values (ds, &c);
case_destroy (&c);
- pool_destroy (gen_pool);
- gen_pool = pool_create ();
+ pool_destroy (data_pool);
+ data_pool = pool_create ();
for (i = 0; i < n_variables; i++)
{
const struct variable *v = v_variables[i];
struct freq_tab *ft = &get_var_freqs (v)->tab;
- if (ft->mode == FRQM_GENERAL)
- {
ft->data = hsh_create (16, compare_freq, hash_freq, NULL, v);
}
- else
- {
- int j;
-
- for (j = (ft->max - ft->min); j >= 0; j--)
- ft->vector[j] = 0.0;
- ft->out_of_range = 0.0;
- ft->sysmis = 0.0;
- }
- }
}
/* Finishes up with the variables after frequencies have been
@@ -729,7 +676,6 @@
size_t i;
ft = &get_var_freqs (v)->tab;
- assert (ft->mode == FRQM_GENERAL);
compare = get_freq_comparator (cmd.sort, var_get_type (v));
/* Extract data from hash table. */
@@ -777,7 +723,6 @@
cleanup_freq_tab (const struct variable *v)
{
struct freq_tab *ft = &get_var_freqs (v)->tab;
- assert (ft->mode == FRQM_GENERAL);
free (ft->valid);
hsh_destroy (ft->data);
}
@@ -787,9 +732,6 @@
static int
frq_custom_variables (struct lexer *lexer, struct dataset *ds, struct
cmd_frequencies *cmd UNUSED, void *aux UNUSED)
{
- int mode;
- int min = 0, max = 0;
-
size_t old_n_variables = n_variables;
size_t i;
@@ -802,31 +744,6 @@
PV_APPEND | PV_NO_SCRATCH))
return 0;
- if (!lex_match (lexer, '('))
- mode = FRQM_GENERAL;
- else
- {
- mode = FRQM_INTEGER;
- if (!lex_force_int (lexer))
- return 0;
- min = lex_integer (lexer);
- lex_get (lexer);
- if (!lex_force_match (lexer, ','))
- return 0;
- if (!lex_force_int (lexer))
- return 0;
- max = lex_integer (lexer);
- lex_get (lexer);
- if (!lex_force_match (lexer, ')'))
- return 0;
- if (max < min)
- {
- msg (SE, _("Upper limit of integer mode value range must be "
- "greater than lower limit."));
- return 0;
- }
- }
-
for (i = old_n_variables; i < n_variables; i++)
{
const struct variable *v = v_variables[i];
@@ -838,25 +755,8 @@
"subcommand."), var_get_name (v));
return 0;
}
- if (mode == FRQM_INTEGER && !var_is_numeric (v))
- {
- msg (SE, _("Integer mode specified, but %s is not a numeric "
- "variable."), var_get_name (v));
- return 0;
- }
-
vf = var_attach_aux (v, xmalloc (sizeof *vf), var_dtor_free);
- vf->tab.mode = mode;
vf->tab.valid = vf->tab.missing = NULL;
- if (mode == FRQM_INTEGER)
- {
- vf->tab.min = min;
- vf->tab.max = max;
- vf->tab.vector = pool_nalloc (int_pool,
- max - min + 1, sizeof *vf->tab.vector);
- }
- else
- vf->tab.vector = NULL;
vf->n_groups = 0;
vf->groups = NULL;
vf->width = var_get_width (v);
@@ -903,7 +803,7 @@
if (nl >= ml)
{
ml += 16;
- dl = pool_nrealloc (int_pool, dl, ml, sizeof *dl);
+ dl = pool_nrealloc (syntax_pool, dl, ml, sizeof *dl);
}
dl[nl++] = lex_tokval (lexer);
lex_get (lexer);
@@ -974,7 +874,7 @@
if (i >= n_percentiles || x != percentiles[i].p)
{
- percentiles = pool_nrealloc (int_pool, percentiles,
+ percentiles = pool_nrealloc (syntax_pool, percentiles,
n_percentiles + 1, sizeof *percentiles);
if (i < n_percentiles)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp doc/statistics.texi src/language/stats/Cha...,
Ben Pfaff <=