Last update: 26 April,2000
2000 #001 _____________________________________________________________________________ Topic: ilogb return value when X == 0 Relevant Sections: ilogb Spec: XSH5 Resolution Request: ------------------- It appears as if we may have missed folding the spec updates in for this problem which occurred in the Issue 4v2 spec. For PIN4U.00037, this group ruled on ilogb: This is indeed a grey area. The return value is in conflict with the description, and also inconsistent with the definition of logb. A PIN should be granted. A future revision of the specification will correct the return values as follows: if X == 0 return -INT_MAX if X == NaN or +/-infinity, return INT_MAX Issue 5 currently says that if X==0, return -INT_MIN. Was this an update we missed ? Resolution Response ------------------- The existing return value of -INT_MIN as stated in XSH5 is incorrect. A future revision of the specification is expected to align with the c99 spec. Return values of either -INT_MAX or INT_MIN are permitted for XSH5. Rationale ------------- The interpretation quoted was against XSH4. The resulting change in XSH5 was incorrect in that -INT_MIN should have been -INT_MAX according to the interpretation. C99 allows that if x is 0, then ilogb() returns FP_ILOGB0, which shall either be INT_MIN or -INT_MAX, and if x is NaN, then ilogb() returns FP_ILOGBNAN which shall either be INT_MAX or INT_MIN. If x is infinity, ilogb() returns INT_MAX (unchanged in either XSH4.2 or XSH5). Thus c99 allows the behavior described in both XSH4 and the interpretation . Circulated for review: Mar 8 2000 Updated: 30 March 2000 Approved: April 2000