From 35a1f2fcfcb174f9dbe3775fc75cad140e97e55e Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 8 Jun 2015 12:39:14 -0800 Subject: Recategorize the floating-point operations "under consideration". min/max - Promote these to base; they are all trivially polyfillable, and are useful things to have in the base platform besides. nearestInt - This is not trivially polyfillable (JavaScript's Math.round does tie-breaking wrong), so put it in EssentialPostMVPFeatures.md so it can join floor/ceil. trunc - This is not trivially polyfillable (in ES6, but not in all the browsers we need the polyfill to support), so put it in EssentialPostMVPFeatures.md so it can join floor/ceil/nearestInt in providing rouding to integer via all the standard roundings. minNum/maxNum - Put these in FutureFeatures.md for future consideration. They're not trivially polyfillable, and they're not obviously essential at this point, though they do have uses. --- AstSemantics.md | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'AstSemantics.md') diff --git a/AstSemantics.md b/AstSemantics.md index a3014f8..6143c8e 100644 --- a/AstSemantics.md +++ b/AstSemantics.md @@ -360,6 +360,8 @@ Floating point arithmetic follows the IEEE-754 standard, except that: * Float32Lt - less than * Float32Le - less than or equal * Float32Sqrt - square root + * Float32Min - minimum; if either operand is NaN, returns NaN + * Float32Max - maximum; if either operand is NaN, returns NaN * Float64Add - addition * Float64Sub - subtraction @@ -374,24 +376,10 @@ Floating point arithmetic follows the IEEE-754 standard, except that: * Float64Lt - less than * Float64Le - less than or equal * Float64Sqrt - square root - -Operations under consideration: - - * Float32Min - minimum; if either operand is NaN, returns NaN - * Float32Max - maximum; if either operand is NaN, returns NaN - * Float32MinNum - minimum; if exactly one operand is NaN, returns the other operand - * Float32MaxNum - maximum; if exactly one operand is NaN, returns the other operand - * Float32Trunc - round to nearest integer towards zero - * Float32NearestInt - round to nearest integer, ties to even - * Float64Min - minimum; if either operand is NaN, returns NaN * Float64Max - maximum; if either operand is NaN, returns NaN - * Float64MinNum - minimum; if exactly one operand is NaN, returns the other operand - * Float64MaxNum - maximum; if exactly one operand is NaN, returns the other operand - * Float64Trunc - round to nearest integer towards zero - * Float64NearestInt - round to nearest integer, ties to even -Min, Max, MinNum, and MaxNum operations would treat -0 as being effectively less than 0. +Min and Max operations treat -0 as being effectively less than 0. ## Datatype conversions, truncations, reinterpretations, promotions, and demotions -- cgit v1.2.3