class std::numeric_limits<ov::bfloat16>

#include <bfloat16.hpp>

template <>
class numeric_limits<ov::bfloat16>
{
public:
    // fields

    static constexpr bool is_specialized = true;
    static constexpr int digits = 7;
    static constexpr int digits10 = 2;
    static constexpr bool is_signed = true;
    static constexpr bool is_integer = false;
    static constexpr bool is_exact = false;
    static constexpr int radix = 2;
    static constexpr int min_exponent = -125;
    static constexpr int min_exponent10 = -37;
    static constexpr int max_exponent = 128;
    static constexpr int max_exponent10 = 38;
    static constexpr bool has_infinity = true;
    static constexpr bool has_quiet_NaN = true;
    static constexpr bool has_signaling_NaN = true;
    static constexpr float_denorm_style has_denorm = denorm_absent;
    static constexpr bool has_denorm_loss = false;
    static constexpr bool is_iec559 = false;
    static constexpr bool is_bounded = false;
    static constexpr bool is_modulo = false;
    static constexpr bool traps = false;
    static constexpr bool tinyness_before = false;
    static constexpr float_round_style round_style = round_to_nearest;

    // methods

    static constexpr ov::bfloat16 min();
    static constexpr ov::bfloat16 max();
    static constexpr ov::bfloat16 lowest();
    static constexpr ov::bfloat16 epsilon();
    static constexpr ov::bfloat16 round_error();
    static constexpr ov::bfloat16 infinity();
    static constexpr ov::bfloat16 quiet_NaN();
    static constexpr ov::bfloat16 signaling_NaN();
    static constexpr ov::bfloat16 denorm_min();
};

class std::numeric_limits<ov::float16>

#include <float16.hpp>

template <>
class numeric_limits<ov::float16>
{
public:
    // fields

    static constexpr bool is_specialized = true;
    static constexpr int digits = 11;
    static constexpr int digits10 = 3;
    static constexpr bool is_signed = true;
    static constexpr bool is_integer = false;
    static constexpr bool is_exact = false;
    static constexpr int radix = 2;
    static constexpr int min_exponent = -13;
    static constexpr int min_exponent10 = -4;
    static constexpr int max_exponent = 16;
    static constexpr int max_exponent10 = 4;
    static constexpr bool has_infinity = true;
    static constexpr bool has_quiet_NaN = true;
    static constexpr bool has_signaling_NaN = true;
    static constexpr float_denorm_style has_denorm = denorm_absent;
    static constexpr bool has_denorm_loss = false;
    static constexpr bool is_iec559 = false;
    static constexpr bool is_bounded = false;
    static constexpr bool is_modulo = false;
    static constexpr bool traps = false;
    static constexpr bool tinyness_before = false;
    static constexpr float_round_style round_style = round_to_nearest;

    // methods

    static constexpr ov::float16 min();
    static constexpr ov::float16 max();
    static constexpr ov::float16 lowest();
    static constexpr ov::float16 epsilon();
    static constexpr ov::float16 round_error();
    static constexpr ov::float16 infinity();
    static constexpr ov::float16 quiet_NaN();
    static constexpr ov::float16 signaling_NaN();
    static constexpr ov::float16 denorm_min();
};