Skip to content

Wrong El::limits::Lowest() for integer types

Repro:

#include <El.hpp>
#include <limits>
void limits()
{
  El::Output("std::numeric_limits<int>::lowest() = ", std::numeric_limits<int>::lowest(), ", El::limits::Lowest<int>() = ", El::limits::Lowest<int>());
  El::Output("std::numeric_limits<unsigned int>::lowest() = ", std::numeric_limits<unsigned int>::lowest(), ", El::limits::Lowest<unsigned int>() = ", El::limits::Lowest<unsigned int>());
}

Output:

std::numeric_limits<int>::lowest() = -2147483648, El::limits::Lowest<int>() = -2147483647
std::numeric_limits<unsigned int>::lowest() = 0, El::limits::Lowest<unsigned int>() = 1