arma :: max и arma :: min, как представляется, дают неожиданные результаты при подаче вектора, содержащего все значения NAN. Вместо возврата NaN функции min/max возвращают +/- inf. Является ли это ошибкой в библиотеке или ожидаемым поведением?armadillo max/min функция обработки NaN?
#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:1> min([nan,nan])
ans = NaN
octave:2> max([nan,nan])
ans = NaN
Я ожидаю, что это то же самое, что вы получите, если вы назовете его пустой строкой. –