component doubletest;
pin out float out;
pin in float in;
pin out bit ok;
pin out float diff;

function update;
function check;

variable int i;

license "GPL";
;;
FUNCTION(update) {
    out = i + i * (1. / 4294967296.);
    i = (i+1) % 100;
}

FUNCTION(check) {
    double tmp = in;
    int j = tmp;
    double k = j + j * (1. / 4294967296.);
    ok = (k == tmp);
    diff = k - tmp;
}

