@@ -1219,22 +1219,25 @@ mod prim_f16 {}
12191219/// 
12201220/// # NaN bit patterns 
12211221/// 
1222- /// This section defines the possible NaN bit patterns returned by non-"bitwise" floating point 
1223- /// operations. The bitwise operations are unary `-`, `abs`, `copysign`; those are guaranteed to 
1224- /// exactly preserve the bit pattern of their input except for possibly changing the sign bit. 
1222+ /// This section defines the possible NaN bit patterns returned by floating point operations. 
12251223/// 
1226- /// A floating-point NaN value consists of: 
1227- /// - a sign bit 
1228- /// - a quiet/signaling bit 
1224+ /// The bit pattern of a floating point NaN value is defined by: 
1225+ /// - a sign bit. 
1226+ /// - a quiet/signaling bit. Rust assumes that the quiet/signaling bit being set to `1` indicates a 
1227+ ///   quiet NaN (QNaN), and a value of `0` indicates a signaling NaN (SNaN). In the following we 
1228+ ///   will hence just call it the "quiet bit". 
12291229/// - a payload, which makes up the rest of the significand (i.e., the mantissa) except for the 
1230- ///   quiet/signaling  bit. 
1230+ ///   quiet bit. 
12311231/// 
1232- /// Rust assumes that the quiet/signaling bit being set to `1` indicates a quiet NaN (QNaN), and a 
1233- /// value of `0` indicates a signaling NaN (SNaN). In the following we will hence just call it the 
1234- /// "quiet bit". 
1232+ /// The rules for NaN values differ between *arithmetic* and *non-arithmetic* (or "bitwise") 
1233+ /// operations. The non-arithmetic operations are unary `-`, `abs`, `copysign`, `signum`, 
1234+ /// `{to,from}_bits`, `{to,from}_{be,le,ne}_bytes` and `is_sign_{positive,negative}`. These 
1235+ /// operations are guaranteed to exactly preserve the bit pattern of their input except for possibly 
1236+ /// changing the sign bit. 
12351237/// 
1236- /// The following rules apply when a NaN value is returned: the result has a non-deterministic sign. 
1237- /// The quiet bit and payload are non-deterministically chosen from the following set of options: 
1238+ /// The following rules apply when a NaN value is returned from an arithmetic operation: the result 
1239+ /// has a non-deterministic sign. The quiet bit and payload are non-deterministically chosen from 
1240+ /// the following set of options: 
12381241/// 
12391242/// - **Preferred NaN**: The quiet bit is set and the payload is all-zero. 
12401243/// - **Quieting NaN propagation**: The quiet bit is set and the payload is copied from any input 
@@ -1273,10 +1276,10 @@ mod prim_f16 {}
12731276/// (e.g. `min`, `minimum`, `max`, `maximum`); other aspects of their semantics and which IEEE 754 
12741277/// operation they correspond to are documented with the respective functions. 
12751278/// 
1276- /// When a  floating- point operation is executed in `const` context, the same rules apply: no  
1277- /// guarantee is made about which of the NaN bit patterns described above will be returned. The  
1278- /// result does not have to match what happens when executing the same code at runtime, and the  
1279- /// result can vary depending on factors such as compiler version and flags. 
1279+ /// When an arithmetic  floating  point operation is executed in `const` context, the same rules 
1280+ /// apply: no  guarantee is made about which of the NaN bit patterns described above will be 
1281+ /// returned. The  result does not have to match what happens when executing the same code at 
1282+ /// runtime, and the  result can vary depending on factors such as compiler version and flags. 
12801283/// 
12811284/// ### Target-specific "extra" NaN values 
12821285// FIXME: Is there a better place to put this? 
0 commit comments