# HG changeset patch # User jwe # Date 749250402 0 # Node ID 0869dc33276c1ccd9c4608cad81776dc56740556 # Parent 5b46fbec14887c476eb213a0127c80b4c3ad3d13 [project @ 1993-09-28 21:06:42 by jwe] (linear_constraints_ok): Improve warning for the case of constraints with zero dimensions. (nonlinear_constraints_ok): Likewise. diff -r 5b46fbec1488 -r 0869dc33276c src/npsol.cc --- a/src/npsol.cc Tue Sep 28 14:23:47 1993 +0000 +++ b/src/npsol.cc Tue Sep 28 21:06:42 1993 +0000 @@ -171,10 +171,23 @@ int lub_len = lub.capacity (); int c_rows = c.rows (); int c_cols = c.columns (); - int ok = x_len == c_cols && llb_len == lub_len && llb_len == c_rows; - if (! ok && warn) - message (warn_for, "linear constraints have inconsistent dimensions"); + int ok = 1; + if (warn) + { + if (c_rows == 0 || c_cols == 0 || llb_len == 0 || lub_len == 0) + { + ok = 0; + message (warn_for, + "linear constraints must have nonzero dimensions"); + } + else if (x_len != c_cols || llb_len != lub_len || llb_len != c_rows) + { + ok = 0; + message (warn_for, + "linear constraints have inconsistent dimensions"); + } + } return ok; } @@ -188,10 +201,23 @@ int nlub_len = nlub.capacity (); ColumnVector c = (*g) (x); int c_len = c.capacity (); - int ok = nllb_len == nlub_len && nllb_len == c_len; + int ok = - if (! ok && warn) - message (warn_for, "nonlinear constraints have inconsistent dimensions"); + int ok = 1; + if (warn) + { + if (nllb_len == 0 || nlub_len == 0 || c_len == 0) + { + ok = 0; + message (warn_for, + "nonlinear constraints have nonzero dimensions"); + } + else if (nllb_len != nlub_len || nllb_len != c_len) + { + ok = 0; + message (warn_for, + "nonlinear constraints have inconsistent dimensions"); + } return ok; }