# HG changeset patch # User jwe # Date 832044061 0 # Node ID 64dbd9cb5e5a4a7acf31a8bdc0262907791342c2 # Parent 755b1cd2e9147a5665d3a1c53b1b86642f2b040a [project @ 1996-05-14 03:21:01 by jwe] diff -r 755b1cd2e914 -r 64dbd9cb5e5a src/data.cc --- a/src/data.cc Tue May 14 03:13:39 1996 +0000 +++ b/src/data.cc Tue May 14 03:21:01 1996 +0000 @@ -58,6 +58,12 @@ #define ABS(x) (((x) < 0) ? (-x) : (x)) #endif +// Should expressions like ones (-1, 5) result in an empty matrix or +// an error? A positive value means yes. A negative value means +// yes, but print a warning message. Zero means it should be +// considered an error. +static int Vtreat_neg_dim_as_zero; + DEFUN (all, args, , "all (X): are all elements of X nonzero?") { @@ -804,12 +810,12 @@ { if (nr < 0 || nc < 0) { - if (user_pref.treat_neg_dim_as_zero) + if (Vtreat_neg_dim_as_zero) { nr = (nr < 0) ? 0 : nr; nc = (nc < 0) ? 0 : nc; - if (user_pref.treat_neg_dim_as_zero < 0) + if (Vtreat_neg_dim_as_zero < 0) warning ("%s: converting negative dimension to zero", warnfor); } @@ -1094,6 +1100,14 @@ return retval; } +static int +treat_neg_dim_as_zero (void) +{ + Vtreat_neg_dim_as_zero = check_preference ("treat_neg_dim_as_zero"); + + return 0; +} + void symbols_of_data (void) { @@ -1147,6 +1161,9 @@ DEFCONST (realmin, DBL_MIN, 0, 0, "realmin (): return smallest representable floating point number"); + + DEFVAR (treat_neg_dim_as_zero, 0.0, 0, treat_neg_dim_as_zero, + "convert negative dimensions to zero"); } /*