4 ms·
> An easy example is NaN propagation, which can be nondeterministic in certain circumstances. Which circumstances?
by genuine_smiles 1y ago
> An easy example is NaN propagation, which can be nondeterministic in certain circumstances.
Which circumstances?
- xmcqdpt2 1y agoSee for example https://github.com/WebAssembly/design/issues/1463 https://github.com/WebAssembly/design/issues/1463 In general, if NaN1 and NaN2 are different (there are 23 bits in a NaN that can be set to an arbitrary value, the NaN payload) then combining them isn’t deterministic. NaN1 + NaN2 might produce NaN1 or NaN2 depending on the processor model, instructions etc. IEEE754 only says that the result must be one of the two input NaNs (or at least it did last time I checked the standard.) In practice, NaN payloads are seldomly used so it doesn’t matter much. NaN canonicalization involves transforming all NaNs to specific NaN values, and AFAIK it’s expensive because technically you need to check for NaN all the time.