Skip to content
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

Document which methods on f64 are precise #118217

Merged
merged 1 commit into from
Feb 29, 2024
Merged

Conversation

tbu-
Copy link
Contributor

@tbu- tbu- commented Nov 23, 2023

No description provided.

@rustbot
Copy link
Collaborator

rustbot commented Nov 23, 2023

r? @m-ou-se

(rustbot has picked a reviewer for you, use r? to override)

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Nov 23, 2023
@tbu-
Copy link
Contributor Author

tbu- commented Nov 23, 2023

It has surprised me in the past that floating-point calculations executed on macOS can be different than the ones on Linux or Windows. This is why I wanted to clearly document which method's exact results can be relied upon and which cannot.

If this is desired, I'll do the same for f32.

@m-ou-se
Copy link
Member

m-ou-se commented Nov 28, 2023

@workingjubilee This seems like something you might have an opinion on?

@m-ou-se m-ou-se assigned Amanieu and unassigned m-ou-se Feb 14, 2024
Copy link
Member

@Amanieu Amanieu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think "precise" is the correct word to use here because it has a very specific meaning in floating-point arithmetic: it means that the float-encoded result is exactly identical to the mathematical result, which may sometimes not be true due to limited float precision.

A better word might be "consistent" to indicate that the result will be consistent across platforms.

library/std/src/f64.rs Outdated Show resolved Hide resolved
library/std/src/f64.rs Outdated Show resolved Hide resolved
library/std/src/f64.rs Outdated Show resolved Hide resolved
library/std/src/f64.rs Outdated Show resolved Hide resolved
@Amanieu Amanieu added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 29, 2024
@tbu-
Copy link
Contributor Author

tbu- commented Feb 29, 2024

I don't think "precise" is the correct word to use here because it has a very specific meaning in floating-point arithmetic: it means that the float-encoded result is exactly identical to the mathematical result, which may sometimes not be true due to limited float precision.

The word precise is only used on the methods that produce results identical to the mathematical result: floor, ceil, round, round_ties_even, trunc, fract and abs.

@tbu- tbu- force-pushed the pr_floating_point branch from 6ea90e3 to b5307f5 Compare February 29, 2024 10:58
@tbu-
Copy link
Contributor Author

tbu- commented Feb 29, 2024

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 29, 2024
@Amanieu
Copy link
Member

Amanieu commented Feb 29, 2024

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Feb 29, 2024

📌 Commit b5307f5 has been approved by Amanieu

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 29, 2024
tbu- added a commit to tbu-/rust that referenced this pull request Feb 29, 2024
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Feb 29, 2024
Document which methods on `f32` are precise

Same as rust-lang#118217 but for `f32`.
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 29, 2024
…llaumeGomez

Rollup of 10 pull requests

Successful merges:

 - rust-lang#118217 (Document which methods on `f64` are precise)
 - rust-lang#119748 (Increase visibility of `join_path` and `split_paths`)
 - rust-lang#121412 (platform docs: clarify hexagon-unknown-none-elf example, add hexagon-unknown-linux-musl)
 - rust-lang#121654 (Fix `async Fn` confirmation for `FnDef`/`FnPtr`/`Closure` types)
 - rust-lang#121700 (CFI: Don't compress user-defined builtin types)
 - rust-lang#121765 (add platform-specific function to get the error number for HermitOS)
 - rust-lang#121781 (bootstrap/format: send larger batches to rustfmt)
 - rust-lang#121788 (bootstrap: fix clap deprecated warnings)
 - rust-lang#121792 (Improve renaming suggestion when item starts with underscore)
 - rust-lang#121793 (Document which methods on `f32` are precise)

r? `@ghost`
`@rustbot` modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 29, 2024
Rollup merge of rust-lang#121793 - tbu-:pr_floating_point_32, r=Amanieu

Document which methods on `f32` are precise

Same as rust-lang#118217 but for `f32`.
@bors bors merged commit 0c2cb39 into rust-lang:master Feb 29, 2024
11 checks passed
@rustbot rustbot added this to the 1.78.0 milestone Feb 29, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 29, 2024
Rollup merge of rust-lang#118217 - tbu-:pr_floating_point, r=Amanieu

Document which methods on `f64` are precise
bors added a commit to rust-lang/miri that referenced this pull request May 2, 2024
update host-float comments

Turns out most of these do not have guaranteed precision anyway so it's fine to use host floats (see rust-lang/rust#121793 and rust-lang/rust#118217). The exception are sqrt and mul_add, tracked at #3534 and #2995.
fmease added a commit to fmease/rust that referenced this pull request May 3, 2024
variable-precision float operations can differ depending on optimization levels

Follow-up to rust-lang#121793 and rust-lang#118217 that accounts for optimizations changing the precision of these functions.

Fixes rust-lang#109118
Fixes rust-lang#71355
fmease added a commit to fmease/rust that referenced this pull request May 3, 2024
variable-precision float operations can differ depending on optimization levels

Follow-up to rust-lang#121793 and rust-lang#118217 that accounts for optimizations changing the precision of these functions.

Fixes rust-lang#109118
Fixes rust-lang#71355
fmease added a commit to fmease/rust that referenced this pull request May 3, 2024
variable-precision float operations can differ depending on optimization levels

Follow-up to rust-lang#121793 and rust-lang#118217 that accounts for optimizations changing the precision of these functions.

Fixes rust-lang#109118
Fixes rust-lang#71355
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request May 3, 2024
variable-precision float operations can differ depending on optimization levels

Follow-up to rust-lang#121793 and rust-lang#118217 that accounts for optimizations changing the precision of these functions.

Fixes rust-lang#109118
Fixes rust-lang#71355
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request May 3, 2024
Rollup merge of rust-lang#124609 - RalfJung:float-precision, r=cuviper

variable-precision float operations can differ depending on optimization levels

Follow-up to rust-lang#121793 and rust-lang#118217 that accounts for optimizations changing the precision of these functions.

Fixes rust-lang#109118
Fixes rust-lang#71355
RalfJung pushed a commit to RalfJung/rust that referenced this pull request May 4, 2024
update host-float comments

Turns out most of these do not have guaranteed precision anyway so it's fine to use host floats (see rust-lang#121793 and rust-lang#118217). The exception are sqrt and mul_add, tracked at rust-lang/miri#3534 and rust-lang/miri#2995.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants