如何指定两个浮点数的平均值在哪个方向上舍入,这两个浮点数的有效位数的LSB不同?

lin*_*lof 5 c floating-point mathematical-optimization

我正在研究C中的Nelder-Mead优化例程,它涉及平均两个floats.在罕见(但完全可重复)的情况下,两个floats,比如说,x并且y只有它们的重要性的最低位有所区别.当取平均值时,舍入误差意味着结果将是x或者y.

我想指出舍入应始终朝向第二个float.也就是说,我不能简单地指出舍入应该是零或无穷大,因为我事先并不知道是否x会大于y.

(我怎样才能做到这一点?

Dan*_*her 2

我认为没有硬件舍入模式。你必须编写自己的函数,然后,

double average(double x, double y) {
    double a = 0.5*(x+y);
    return (a == x) ? y : a;
}
Run Code Online (Sandbox Code Playgroud)