Boost logo

Boost :

From: Matt Borland (matt_at_[hidden])
Date: 2025-01-19 13:15:27


On Sun, Jan 19, 2025 at 08:04, Ruben Perez <rubenperez038_at_[hidden]> wrote: Hi,

Some problems I've found:

The decimal32 doc page states that the minimum normalized value is

1e-95. The std::numeric_limits<>::min() function agrees with that.

However, fpclassify and similar functions don't seem to agree:

// Both of the above print "1"

std::cout << issubnormal(std::numeric_limits<boost::decimal::decimal32>::min())

<< std::endl;

std::cout << issubnormal(1.0e-95_df) << std::endl;

Printing very small values seem to do nothing:

// This prints an empty line

auto v = 1.0e-94_df;

std::cout << v << std::endl;

Calling to_chars with subnormal values fails with

std::errc::not_supported, regardless of the chars_format used:

// This prints: Error: generic:95

void f(decimal32 v)

{

 char buff[64]{};

 auto r = boost::decimal::to_chars(buff, buff + sizeof(buff), v);

 std::cout << "Error: " << std::make_error_code(r.ec) << std::endl;

}

int main()

{

 auto v = 1e-95_df;

 f(v);

}

Am I doing something stupid?

Nope. See issue 794 and pr 796
Matt




Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk