Skip to content

Document the meaning of values for sys.float_info.rounds #85988

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
rhettinger opened this issue Sep 21, 2020 · 7 comments
Closed

Document the meaning of values for sys.float_info.rounds #85988

rhettinger opened this issue Sep 21, 2020 · 7 comments
Labels
3.10 only security fixes docs Documentation in the Doc dir easy

Comments

@rhettinger
Copy link
Contributor

rhettinger commented Sep 21, 2020

BPO 41822
Nosy @tim-one, @rhettinger, @mdickinson, @serhiy-storchaka, @eamanu, @rahul-kumi

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields:

assignee = None
closed_at = None
created_at = <Date 2020-09-21.00:38:26.708>
labels = ['easy', '3.10', 'docs']
title = 'Document the meaning  of values for sys.float_info.rounds'
updated_at = <Date 2020-10-18.09:13:18.609>
user = 'https://github.com/rhettinger'

bugs.python.org fields:

activity = <Date 2020-10-18.09:13:18.609>
actor = 'rhettinger'
assignee = 'docs@python'
closed = False
closed_date = None
closer = None
components = ['Documentation']
creation = <Date 2020-09-21.00:38:26.708>
creator = 'rhettinger'
dependencies = []
files = []
hgrepos = []
issue_num = 41822
keywords = ['newcomer friendly']
message_count = 5.0
messages = ['377236', '378852', '378853', '378854', '378856']
nosy_count = 7.0
nosy_names = ['tim.peters', 'rhettinger', 'mark.dickinson', 'docs@python', 'serhiy.storchaka', 'eamanu', 'rahul-kumi']
pr_nums = []
priority = 'normal'
resolution = None
stage = None
status = 'open'
superseder = None
type = None
url = 'https://bugs.python.org/issue41822'
versions = ['Python 3.10']

Linked PRs

@rhettinger
Copy link
Contributor Author

The current docs unnecessarily refer readers to the C99 standard. "integer constant representing the rounding mode used for arithmetic operations. This reflects the value of the system FLT_ROUNDS macro at interpreter startup time. See section 5.2.4.2.2 of the C99 standard for an explanation of the possible values and their meanings."

The docs should quote the standard, "The rounding mode for floating-point addition is characterized by the implementation defined value of FLT_ROUNDS: -1 indeterminable, 0 toward zero, 1 to nearest, 2 toward positive infinity, 3 toward negative infinity. All other values for FLT_ROUNDS characterize implementation-defined rounding."
behavior.

@rhettinger rhettinger added docs Documentation in the Doc dir easy labels Sep 21, 2020
@rhettinger rhettinger added docs Documentation in the Doc dir easy labels Sep 21, 2020
@terryjreedy terryjreedy added the 3.10 only security fixes label Sep 25, 2020
@terryjreedy terryjreedy changed the title Document the mean of values for sys.float_info.rounds Document the meaning of values for sys.float_info.rounds Sep 25, 2020
@terryjreedy terryjreedy added the 3.10 only security fixes label Sep 25, 2020
@terryjreedy terryjreedy changed the title Document the mean of values for sys.float_info.rounds Document the meaning of values for sys.float_info.rounds Sep 25, 2020
@rhettinger
Copy link
Contributor Author

Also, we should document the meaning of the other fields. Several of them are not self explanatory:

min_10_exp = -307

does not mean that 2.3e-308 isn't normalized

does mean that 10**-307 is normalized and 10**-308 isn't

min_exp = -1021

does not mean that 2**-1021 is the lowest normalized value

does mean ldexp(0.5, -1021) == float_info.min

decimal_dig = 15

does not mean digits required to specify every unique float

does mean, "number of decimal digits, q, such that any
floating-point number with q decimal digits can be rounded
into a floating-point number with p radix b digits and back
again without change to the q decimal digits"

@serhiy-storchaka
Copy link
Member

Python does not set the meaning and the value of these fields itself. It exposes C constants. Should we just copy definitions from corresponding C or floating-point standards?

@serhiy-storchaka
Copy link
Member

Oh, seems it was what Raymond proposed initially.

@rhettinger
Copy link
Contributor Author

@ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
@tbwolfe
Copy link
Contributor

tbwolfe commented Nov 22, 2022

PR submitted. Please let me know if any changes are required.

mdickinson pushed a commit that referenced this issue Nov 27, 2022
* Change documentation for sys.float_info.rounds

Change the documentation for sys.float_info.rounds to remove
references to C99 section 5.2.4.2.2 and instead place the
available values inline.

* Correction to previous documentation change

Newlines were not preserved in generated HTML on previous
commit. I have changes the list to a comma-separated list
of values and their meanings.

* Clarify source for value of FLT_ROUNDS

Clarify the source of the FLT_ROUNDS value and
change 'floating-point addition' to 'floating-point
arithmetic' to indicate that the rounding mode
applies to all arithmetic operations.
@mdickinson
Copy link
Member

mdickinson commented Nov 27, 2022

Done in #99675. Thanks, @tbwolfe.

hugovk pushed a commit to hugovk/cpython that referenced this issue Feb 28, 2023
…nGH-99675)

* Change documentation for sys.float_info.rounds

Change the documentation for sys.float_info.rounds to remove
references to C99 section 5.2.4.2.2 and instead place the
available values inline.

* Correction to previous documentation change

Newlines were not preserved in generated HTML on previous
commit. I have changes the list to a comma-separated list
of values and their meanings.

* Clarify source for value of FLT_ROUNDS

Clarify the source of the FLT_ROUNDS value and
change 'floating-point addition' to 'floating-point
arithmetic' to indicate that the rounding mode
applies to all arithmetic operations.
hugovk pushed a commit to hugovk/cpython that referenced this issue Feb 28, 2023
…nGH-99675)

* Change documentation for sys.float_info.rounds

Change the documentation for sys.float_info.rounds to remove
references to C99 section 5.2.4.2.2 and instead place the
available values inline.

* Correction to previous documentation change

Newlines were not preserved in generated HTML on previous
commit. I have changes the list to a comma-separated list
of values and their meanings.

* Clarify source for value of FLT_ROUNDS

Clarify the source of the FLT_ROUNDS value and
change 'floating-point addition' to 'floating-point
arithmetic' to indicate that the rounding mode
applies to all arithmetic operations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.10 only security fixes docs Documentation in the Doc dir easy
Projects
None yet
Development

No branches or pull requests

5 participants