diff --git a/spec/duration.html b/spec/duration.html index 7a6fd4ed5..858c92808 100644 --- a/spec/duration.html +++ b/spec/duration.html @@ -1197,7 +1197,7 @@

1. If abs(_years_) ≥ 232, return *false*. 1. If abs(_months_) ≥ 232, return *false*. 1. If abs(_weeks_) ≥ 232, return *false*. - 1. Let _normalizedSeconds_ be _days_ × 86,400 + _hours_ × 3600 + _minutes_ × 60 + _seconds_ + _milliseconds_ × 10-3 + _microseconds_ × 10-6 + _nanoseconds_ × 10-9. + 1. Let _normalizedSeconds_ be _days_ × 86,400 + _hours_ × 3600 + _minutes_ × 60 + _seconds_ + ℝ(𝔽(_milliseconds_)) × 10-3 + ℝ(𝔽(_microseconds_)) × 10-6 + ℝ(𝔽(_nanoseconds_)) × 10-9. 1. NOTE: The above step cannot be implemented directly using floating-point arithmetic. Multiplying by 10-3, 10-6, and 10-9 respectively may be imprecise when _milliseconds_, _microseconds_, or _nanoseconds_ is an unsafe integer. This multiplication can be implemented in C++ with an implementation of `std::remquo()` with sufficient bits in the quotient. String manipulation will also give an exact result, since the multiplication is by a power of 10. 1. If abs(_normalizedSeconds_) ≥ 253, return *false*. 1. Return *true*.