Frequencies.c: Use BIT_INDEX (FRQ_ST_MEDIAN) instead of FRQ_ST_MEDIAN.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 18 Oct 2014 06:56:56 +0000 (08:56 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 18 Oct 2014 10:45:42 +0000 (12:45 +0200)
Closes bug #43427

src/language/stats/frequencies.c
tests/language/stats/frequencies.at

index d7929d580d4c672d09bfd372d58c80dd85506798..dc6eede8809629b61cfeb1d2551708b0a4365308 100644 (file)
@@ -994,7 +994,7 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds)
         }
     }
 
-  if (frq.stats & FRQ_ST_MEDIAN)
+  if (frq.stats & BIT_INDEX (FRQ_ST_MEDIAN))
     {
        frq.percentiles =
          xrealloc (frq.percentiles, 
@@ -1364,7 +1364,7 @@ dump_statistics (const struct frq_proc *frq, const struct var_freqs *vf,
     }
   calc_stats (vf, stat_value);
 
-  t = tab_create (3, ((frq->stats & FRQ_ST_MEDIAN) ? frq->n_stats - 1 : frq->n_stats)
+  t = tab_create (3, ((frq->stats & BIT_INDEX (FRQ_ST_MEDIAN)) ? frq->n_stats - 1 : frq->n_stats)
                  + frq->n_show_percentiles + 2);
   tab_set_format (t, RC_WEIGHT, wfmt);
   tab_box (t, TAL_1, TAL_1, -1, -1 , 0 , 0 , 2, tab_nr(t) - 1) ;
index d321e576a0c9a11ffa0040de2dc5d31ef005164b..6ac8def6f5217838e96f9163606dce86aaf598ea 100644 (file)
@@ -586,3 +586,34 @@ FREQUENCIES
 
 AT_CHECK([pspp frequencies.sps], [0],  [ignore])
 AT_CLEANUP
+
+
+AT_SETUP([FREQUENCIES median])
+AT_DATA([median.sps], [dnl
+data list notable list /x *.
+begin data.
+1
+2
+3000000
+end data.
+
+FREQUENCIES
+       /VARIABLES = x
+       /STATISTICS = MEDIAN
+       .
+])
+
+AT_CHECK([pspp median.sps -O format=csv], [0],  [dnl
+Table: x
+Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
+,1.00,1,33.33,33.33,33.33
+,2.00,1,33.33,33.33,66.67
+,3000000.00,1,33.33,33.33,100.00
+Total,,3,100.0,100.0,
+
+Table: x
+N,Valid,3
+,Missing,0
+Percentiles,50 (Median),2.00
+])
+AT_CLEANUP