diff --git a/ChangeLog b/ChangeLog index 33a2a98b5..473419b77 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-06-23 Robert Larice + * src/frontend/options.c , + * src/frontend/spiceif.c , + * src/frontend/variable.c : + round to nearest integer, `rawfileprec' `numdgt' `history' if_option() doset() + 2011-06-23 Robert Larice * src/frontend/evaluate.c : `[]' indexing operator, round index to nearest integer diff --git a/src/frontend/options.c b/src/frontend/options.c index 21a31a977..903854104 100644 --- a/src/frontend/options.c +++ b/src/frontend/options.c @@ -296,7 +296,7 @@ cp_usrset(struct variable *var, bool isset) if ((var->va_type == CP_BOOL) && (isset == FALSE)) raw_prec = -1; else if (var->va_type == CP_REAL) - raw_prec = (int)(var->va_real); + raw_prec = (int)floor(var->va_real + 0.5); else if (var->va_type == CP_NUM) raw_prec = var->va_num; else @@ -305,7 +305,7 @@ cp_usrset(struct variable *var, bool isset) if ((var->va_type == CP_BOOL) && (isset == FALSE)) cp_numdgt = -1; else if (var->va_type == CP_REAL) - cp_numdgt = (int)(var->va_real); + cp_numdgt = (int)floor(var->va_real + 0.5); else if (var->va_type == CP_NUM) cp_numdgt = var->va_num; else diff --git a/src/frontend/spiceif.c b/src/frontend/spiceif.c index a360cb4a6..01a9183b2 100644 --- a/src/frontend/spiceif.c +++ b/src/frontend/spiceif.c @@ -458,7 +458,7 @@ if_option(CKTcircuit *ckt, char *name, enum cp_types type, void *value) if (type == CP_NUM) pval.iValue = *((int *) value); else if (type == CP_REAL) - pval.iValue = (int)(*((double *) value)); + pval.iValue = (int)floor((*(double *)value) + 0.5); else goto badtype; break; @@ -1111,7 +1111,7 @@ doset(CKTcircuit *ckt, int typecode, GENinstance *dev, GENmodel *mod, IFparm *op iptr = nval.v.vec.iVec = NEWN(int, n); for (i = 0; i < n; i++) - *iptr++ = (int)(*dptr++); + *iptr++ = (int)floor(*dptr++ + 0.5); break; case IF_REAL: @@ -1128,7 +1128,7 @@ doset(CKTcircuit *ckt, int typecode, GENinstance *dev, GENmodel *mod, IFparm *op switch (opt->dataType & IF_VARTYPES) { case IF_FLAG: case IF_INTEGER: - nval.iValue = (int)(*val->v_realdata); + nval.iValue = (int)floor(*val->v_realdata + 0.5); break; case IF_REAL: diff --git a/src/frontend/variable.c b/src/frontend/variable.c index f76305c20..93e3d7f64 100644 --- a/src/frontend/variable.c +++ b/src/frontend/variable.c @@ -159,7 +159,7 @@ cp_vset(char *varname, enum cp_types type, void *value) else if (eq(copyvarname, "history") && (type == CP_NUM)) cp_maxhistlength = v->va_num; else if (eq(copyvarname, "history") && (type == CP_REAL)) - cp_maxhistlength = (int)(v->va_real); + cp_maxhistlength = (int)floor(v->va_real + 0.5); else if (eq(copyvarname, "noclobber")) cp_noclobber = TRUE; else if (eq(varname, "echo")) /*CDHW*/