X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ft-test.q;h=38ea420e5c10335c00a4a44656cba3c8ce02a9a0;hb=0f27235bdf621a87df0c9c2d9b01e9198eb7c42d;hp=4d58206d083e3f24151be5795dc09b0c94ccb45a;hpb=d043fde2b737897e3372670afc47eb648c17624b;p=pspp diff --git a/src/t-test.q b/src/t-test.q index 4d58206d08..38ea420e5c 100644 --- a/src/t-test.q +++ b/src/t-test.q @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include @@ -224,9 +224,6 @@ static int group_calc (const struct ccase *, struct cmd_t_test *); static void group_postcalc (struct cmd_t_test *); -static int compare_var_name (const void *a_, const void *b_, void *v_ UNUSED); -static unsigned hash_var_name (const void *a_, void *v_ UNUSED); - static void calculate(const struct casefile *cf, void *_mode); static int mode; @@ -297,7 +294,7 @@ cmd_t_test(void) struct hsh_table *hash; struct variable *v; - hash=hsh_create(n_pairs,compare_var_name,hash_var_name,0,0); + hash = hsh_create (n_pairs, compare_var_names, hash_var_name, 0, 0); for (i=0; i < n_pairs; ++i) { @@ -363,14 +360,6 @@ tts_custom_groups (struct cmd_t_test *cmd UNUSED) lex_match('='); - if (token != T_ALL && - (token != T_ID || dict_lookup_var (default_dict, tokid) == NULL) - ) - { - msg(SE,_("`%s' is not a variable name"),tokid); - return 0; - } - indep_var = parse_variable (); if (!indep_var) { @@ -456,13 +445,6 @@ tts_custom_pairs (struct cmd_t_test *cmd UNUSED) lex_match('='); - if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL) - && token != T_ALL) - { - msg(SE,_("`%s' is not a variable name"),tokid); - return 0; - } - n_vars=0; if (!parse_variables (default_dict, &vars, &n_vars, PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH)) @@ -1585,25 +1567,6 @@ one_sample_postcalc (struct cmd_t_test *cmd) -static int -compare_var_name (const void *a_, const void *b_, void *v_ UNUSED) -{ - const struct variable *a = a_; - const struct variable *b = b_; - - return strcmp(a->name,b->name); -} - -static unsigned -hash_var_name (const void *a_, void *v_ UNUSED) -{ - const struct variable *a = a_; - - return hsh_hash_bytes (a->name, strlen(a->name)); -} - - - static void paired_precalc (struct cmd_t_test *cmd UNUSED) { @@ -1939,6 +1902,8 @@ calculate(const struct casefile *cf, void *cmd_) } +short which_group(const struct group_statistics *g, + const struct group_properties *p); /* Return -1 if the id of a is less than b; +1 if greater than and 0 if equal */ @@ -1947,26 +1912,28 @@ compare_group_binary(const struct group_statistics *a, const struct group_statistics *b, const struct group_properties *p) { - short flag_a; short flag_b; - + if ( p->criterion == CMP_LE ) { + /* less-than-or-equal comparision is not meaningfull for + alpha variables, so we shouldn't ever arrive here */ assert(p->indep_width == 0 ) ; + flag_a = ( a->id.f < p->v.critical_value ) ; flag_b = ( b->id.f < p->v.critical_value ) ; } else { - flag_a = ( a->id.f == p->v.critical_value ) ; - flag_b = ( b->id.f == p->v.critical_value ) ; + flag_a = which_group(a, p); + flag_b = which_group(b, p); } - if ( flag_a == flag_b) - return 0 ; - - return ( flag_a < flag_b); + if (flag_a < flag_b ) + return -1; + + return (flag_a > flag_b); } /* This is a degenerate case of a hash, since it can only return three possible @@ -1986,15 +1953,28 @@ hash_group_binary(const struct group_statistics *g, } else if ( p->criterion == CMP_EQ) { - if ( 0 == compare_values (&g->id, &p->v.g_value[0], p->indep_width )) - flag = 0 ; - else if ( 0 == compare_values (&g->id, &p->v.g_value[1], p->indep_width )) - flag = 1 ; - else - flag = 2 ; + flag = which_group(g,p); } else assert(0); return flag; } + +/* return 0 if G belongs to group 0, + 1 if it belongs to group 1, + 2 if it belongs to neither group */ +short +which_group(const struct group_statistics *g, + const struct group_properties *p) +{ + + if ( 0 == compare_values (&g->id, &p->v.g_value[0], p->indep_width)) + return 0; + + if ( 0 == compare_values (&g->id, &p->v.g_value[1], p->indep_width)) + return 1; + + return 2; +} +