Opened 10 years ago
Closed 10 years ago
#7905 closed Bugs (fixed)
boost::math::policies::raise_rounding_error returns the wrong min/max values for ignore_error and errno_on_error
Reported by: | Owned by: | John Maddock | |
---|---|---|---|
Milestone: | To Be Determined | Component: | math |
Version: | Boost 1.52.0 | Severity: | Problem |
Keywords: | Cc: |
Description
In the documentation for the rounding functions, in "Table 6. Possible Actions for Rounding Errors", it says that the round function will return "the largest representable value of the target integer type (or the most negative value if the argument to the function was less than zero).
However, the specializations of the raise_rounding_error function for ignore_error and errno_on_error call std::numeric_limits min() and max() with the source type rather than the result type.
For example, calling
iround(INT_MAX + 1.0)
will return
static_cast<int>(std::numeric_limits<double>::max())
rather than
static_cast<int>(std::numeric_limits<int>::max())
as was specified.
Change History (4)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Component: | None → math |
---|---|
Owner: | set to |
comment:4 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Note that the function reads:
but it should read
Two changes: