【问题标题】:armadillo max/min function handling of NaN?NaN的犰狳最大/最小函数处理?
【发布时间】:2014-12-23 03:06:37
【问题描述】:

arma::max 和 arma::min 在输入包含所有 NAN 值的向量时似乎提供了意想不到的结果。 min/max 函数不是返回 NaN,而是返回 +/- inf。这是库中的错误,还是预期的行为?

#include <armadillo>
#include <numeric>
#include <iostream>
int main() {
    arma::vec v(2);
    v[0] = std::numeric_limits<double>::quiet_NaN();
    v[1] = std::numeric_limits<double>::quiet_NaN();
    std::cout << arma::max(v) << " " << arma::min(v) << std::endl;
    // output:  -inf inf 
    std::cout << std::max(v[0], v[1]) << " " << std::min(v[0],v[1]) << std::endl;
    // output:  -inf inf

}

供参考,GNU octave:

octave:1> min([nan,nan])
ans = NaN
octave:2> max([nan,nan])
ans = NaN

【问题讨论】:

    标签: c++ armadillo


    【解决方案1】:

    这取决于每个图书馆他们想要如何处理这个问题。 Armadillo doesn't seem to document their choice,但这是一个完全合理且有效的。我认为没有理由认为这是一个库错误。

    【讨论】:

    • 我希望你用空序列调用它时得到的结果是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多