Hello,

Le 05/05/2023 à 10:00, Jakub Jelinek via Gcc-patches a écrit :
Hi!

The previous patch just added basic intrinsic ranges for sqrt
([-0.0, +Inf] +-NAN being the general result range of the function
and [-0.0, +Inf] the general operand range if result isn't NAN etc.),
the following patch intersects those ranges with particular range
computed from argument or result's exact range with the expected
error in ulps taken into account and adds a function (frange_arithmetic
variant) which can be used by other functions as well as helper.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

I think there is something wrong with the handling of NAN and lower bounds in op1_range. If the lhs has positive lower bound and can be nan, op1 should have -inf lower bound regardless of lhs's lower bound value.

Maybe it would be less error prone to combine the ordered range part (r2) and the unordered one (r) with union instead of intersection?

The rest looks good. There is the case of slightly negative lhs bounds coming (through ulps) from slightly positive op1 that could get better than infinite bounds for op1 range, but at least it is conservatively correct, and I'm not sure it's that important anyway.

Mikael

Reply via email to