fp-evaluation-order.js (880B)
1 // Copyright (C) 2020 Kevin Gibbons. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 esid: sec-date.utc 5 description: arithmetic in Date is done on floating-point numbers 6 info: | 7 [...] 8 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))). 9 10 #sec-maketime 11 12 Let _t_ be ((_h_ `*` msPerHour `+` _m_ `*` msPerMinute) `+` _s_ `*` msPerSecond) `+` _milli_, performing the arithmetic according to IEEE 754-2019 rules (that is, as if using the ECMAScript operators `*` and `+`). 13 14 #sec-makedate 15 16 Return day × msPerDay + time. 17 ---*/ 18 19 assert.sameValue(Date.UTC(1970, 0, 1, 80063993375, 29, 1, -288230376151711740), 29312, 'order of operations / precision in MakeTime'); 20 assert.sameValue(Date.UTC(1970, 0, 213503982336, 0, 0, 0, -18446744073709552000), 34447360, 'precision in MakeDate'); 21 22 reportCompare(0, 0);