Fix real to vpiIntVal conversion in run time
This commit is contained in:
parent
d5823b3e55
commit
095cedb305
|
|
@ -771,7 +771,14 @@ static void real_signal_value(struct t_vpi_value*vp, double rval)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiIntVal:
|
case vpiIntVal:
|
||||||
vp->value.integer = (int)(rval + 0.5);
|
/* NaN or +/- infinity are translated as 0. */
|
||||||
|
if (rval != rval || (rval && (rval == 0.5*rval))) {
|
||||||
|
rval = 0.0;
|
||||||
|
} else {
|
||||||
|
if (rval >= 0.0) rval = floor(rval + 0.5);
|
||||||
|
else rval = ceil(rval - 0.5);
|
||||||
|
}
|
||||||
|
vp->value.integer = rval;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiDecStrVal:
|
case vpiDecStrVal:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue