pspp-cvs
[Top][All Lists]
Advanced

[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)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]