Я работаю над подпрограммой оптимизации Nelder-Mead в C, которая включает в себя получение среднего значения двух float
s. В редких (но вполне воспроизводимых) обстоятельствах два float
s, скажем x
и y
, отличаются только наименее значимым значком их знака. Когда среднее значение принимается, ошибки округления подразумевают, что результатом будет либо x
, либо y
.Как указать, в каком направлении округлить среднее из двух поплавков, которые отличаются LSB от их значения?
Я хотел бы указать, что округление всегда должно быть в направлении второго float
. То есть я не могу просто указать, что округление должно быть в нуле или бесконечности, потому что я не знаю заранее, будет ли x
больше, чем y
.
(Как) могу ли я это сделать?
Не можете ли вы сравнить эти два поплавка и установить округление до нуля, минус бесконечность или плюс бесконечность в зависимости от результата сравнения? –
Но вы можете определить в то время, когда вы округляете ли 'x> y', правильно? –
Вы могли бы, но есть намного более простой способ сделать это. –