Rollup merge of #129683 - RalfJung:copysign, r=thomcc · patricklam/verify-rust-std@d2a001d (original) (raw)

4 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -250,9 +250,14 @@ impl f128 {
250 250 ///
251 251 /// Equal to `self` if the sign of `self` and `sign` are the same, otherwise equal to `-self`.
252 252 /// If `self` is a NaN, then a NaN with the same payload as `self` and the sign bit of `sign` is
253 - /// returned. Note, however, that conserving the sign bit on NaN across arithmetical operations
254 - /// is not generally guaranteed. See [specification of NaN bit
255 - /// patterns](primitive@f32#nan-bit-patterns) for more info.
253 + /// returned.
254 + ///
255 + /// If `sign` is a NaN, then this operation will still carry over its sign into the result. Note
256 + /// that IEEE 754 doesn't assign any meaning to the sign bit in case of a NaN, and as Rust
257 + /// doesn't guarantee that the bit pattern of NaNs are conserved over arithmetic operations, the
258 + /// result of `copysign` with `sign` being a NaN might produce an unexpected or non-portable
259 + /// result. See the [specification of NaN bit patterns](primitive@f32#nan-bit-patterns) for more
260 + /// info.
256 261 ///
257 262 /// # Examples
258 263 ///
Original file line number Diff line number Diff line change
@@ -249,9 +249,14 @@ impl f16 {
249 249 ///
250 250 /// Equal to `self` if the sign of `self` and `sign` are the same, otherwise equal to `-self`.
251 251 /// If `self` is a NaN, then a NaN with the same payload as `self` and the sign bit of `sign` is
252 - /// returned. Note, however, that conserving the sign bit on NaN across arithmetical operations
253 - /// is not generally guaranteed. See [specification of NaN bit
254 - /// patterns](primitive@f32#nan-bit-patterns) for more info.
252 + /// returned.
253 + ///
254 + /// If `sign` is a NaN, then this operation will still carry over its sign into the result. Note
255 + /// that IEEE 754 doesn't assign any meaning to the sign bit in case of a NaN, and as Rust
256 + /// doesn't guarantee that the bit pattern of NaNs are conserved over arithmetic operations, the
257 + /// result of `copysign` with `sign` being a NaN might produce an unexpected or non-portable
258 + /// result. See the [specification of NaN bit patterns](primitive@f32#nan-bit-patterns) for more
259 + /// info.
255 260 ///
256 261 /// # Examples
257 262 ///
Original file line number Diff line number Diff line change
@@ -228,9 +228,14 @@ impl f32 {
228 228 ///
229 229 /// Equal to `self` if the sign of `self` and `sign` are the same, otherwise equal to `-self`.
230 230 /// If `self` is a NaN, then a NaN with the same payload as `self` and the sign bit of `sign` is
231 - /// returned. Note, however, that conserving the sign bit on NaN across arithmetical operations
232 - /// is not generally guaranteed. See [specification of NaN bit
233 - /// patterns](primitive@f32#nan-bit-patterns) for more info.
231 + /// returned.
232 + ///
233 + /// If `sign` is a NaN, then this operation will still carry over its sign into the result. Note
234 + /// that IEEE 754 doesn't assign any meaning to the sign bit in case of a NaN, and as Rust
235 + /// doesn't guarantee that the bit pattern of NaNs are conserved over arithmetic operations, the
236 + /// result of `copysign` with `sign` being a NaN might produce an unexpected or non-portable
237 + /// result. See the [specification of NaN bit patterns](primitive@f32#nan-bit-patterns) for more
238 + /// info.
234 239 ///
235 240 /// # Examples
236 241 ///
Original file line number Diff line number Diff line change
@@ -228,9 +228,14 @@ impl f64 {
228 228 ///
229 229 /// Equal to `self` if the sign of `self` and `sign` are the same, otherwise equal to `-self`.
230 230 /// If `self` is a NaN, then a NaN with the same payload as `self` and the sign bit of `sign` is
231 - /// returned. Note, however, that conserving the sign bit on NaN across arithmetical operations
232 - /// is not generally guaranteed. See [specification of NaN bit
233 - /// patterns](primitive@f32#nan-bit-patterns) for more info.
231 + /// returned.
232 + ///
233 + /// If `sign` is a NaN, then this operation will still carry over its sign into the result. Note
234 + /// that IEEE 754 doesn't assign any meaning to the sign bit in case of a NaN, and as Rust
235 + /// doesn't guarantee that the bit pattern of NaNs are conserved over arithmetic operations, the
236 + /// result of `copysign` with `sign` being a NaN might produce an unexpected or non-portable
237 + /// result. See the [specification of NaN bit patterns](primitive@f32#nan-bit-patterns) for more
238 + /// info.
234 239 ///
235 240 /// # Examples
236 241 ///