X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ft-test.q;h=38ea420e5c10335c00a4a44656cba3c8ce02a9a0;hb=0f27235bdf621a87df0c9c2d9b01e9198eb7c42d;hp=2e10a2b04bad6459630ddbfc8d2635d7da0fe6bb;hpb=ae692b0ac5ceff417fa9e9fc136d95acae3e99e1;p=pspp diff --git a/src/t-test.q b/src/t-test.q index 2e10a2b04b..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 @@ -360,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) { @@ -453,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)) @@ -1917,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 */ @@ -1925,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 @@ -1964,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; +} +