On 11 December 2013 19:16, Tom Musta <tommu...@gmail.com> wrote:
>  uint32 float64_to_uint32( float64 a STATUS_PARAM )
>  {
> -    int64_t v;
> +    uint64_t v;
>      uint32 res;
>
> -    v = float64_to_int64(a STATUS_VAR);
> -    if (v < 0) {
> -        res = 0;
> -        float_raise( float_flag_invalid STATUS_VAR);
> -    } else if (v > 0xffffffff) {
> +    v = float64_to_uint64(a STATUS_VAR);
> +    if (v > 0xffffffff) {
>          res = 0xffffffff;
> +        STATUS(float_exception_flags) &= ~float_flag_inexact;

The IEEE exception flags are cumulative (ie never get cleared
except by guest program explicit request); this change means
that if a previous operation raised the inexact flag you've just
lost that.

thanks
-- PMM

Reply via email to