X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Flinreg%2Fcoefficient.c;h=d1fcbfa2e4bb6a145d0404c9d5493c7c397a62a8;hb=7102dc8607b7e6e25bdb9806f508dce71fe76ce4;hp=4390894d3c43244d37204db6f6ed8b526a83cf9a;hpb=fedf3551ccc7d825fc7f579fe65cd14289fe1d7d;p=pspp diff --git a/src/math/linreg/coefficient.c b/src/math/linreg/coefficient.c index 4390894d3c..d1fcbfa2e4 100644 --- a/src/math/linreg/coefficient.c +++ b/src/math/linreg/coefficient.c @@ -1,22 +1,22 @@ /* - * lib/linreg/coefficient.c - * - * Copyright (C) 2005 Free Software Foundation, Inc. Written by Jason H Stover. - * - * 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 the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * 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., 51 - * Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. - */ + lib/linreg/coefficient.c + + Copyright (C) 2005 Free Software Foundation, Inc. Written by Jason H Stover. + + 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 the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + 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., 51 + Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. +*/ /* Accessor functions for matching coefficients and variables. @@ -31,14 +31,14 @@ struct varinfo { const struct variable *v; /* Variable associated with this - * coefficient. Note this variable - * may not be unique. In other words, - * a coefficient structure may have - * other v_info's, each with its own - * variable. */ + coefficient. Note this variable + may not be unique. In other words, + a coefficient structure may have + other v_info's, each with its own + variable. */ const union value *val; /* Value of the variable v which this varinfo - * refers to. This member is relevant only to - * categorical variables. */ + refers to. This member is relevant only to + categorical variables. */ }; void @@ -164,7 +164,7 @@ pspp_linreg_coeff_get_value (struct pspp_linreg_coeff *c, { return NULL; } - if (v->type == NULL) + if (v->type == NUMERIC) { return NULL; } @@ -189,25 +189,27 @@ pspp_linreg_get_coeff (const pspp_linreg_cache * c, const struct variable *v, const union value *val) { int i = 1; - struct pspp_linreg_coeff *result; - const struct variable *tmp; + struct pspp_linreg_coeff *result = NULL; + const struct variable *tmp = NULL; if (c == NULL) { return NULL; } - if (c->coeff == NULL || c->n_indeps == NULL || v == NULL) + if (c->coeff == NULL || c->n_indeps == 0 || v == NULL) { return NULL; } + result = c->coeff + i; + tmp = pspp_linreg_coeff_get_var (result, 0); while (tmp->index != v->index && i < c->n_coeffs) { result = c->coeff + i; tmp = pspp_linreg_coeff_get_var (result, 0); i++; } - if (i == c->n_coeffs) + if (i > c->n_coeffs) { return NULL; }