WG14/N816 J11/98-015 Changes to Annex H LIA [The page and paragraph numbers are based upon working draft January 30, 1998 that Larry gave me at the Frisco, CO, meeting.] In Annex H LIA: Thruout the annex, make sure all references to LIA are to changed to LIA-1. In H.2 Types: add after ULP: (Unit in the Last Place). add at the end of the sentance: (LIA-1 subclause 5.2.8). In H.2.3.3 Rounding styles: Paragraph 1: change "types use" to "types to use". In H.2.4 Type conversion: Replace paragraphs 2 thru 5 with: 2 In the above conversions from floating to integer, the use of (cast)x can be replaced with (cast)round(x), (cast)rint(x), (cast)nearbyint(x), (cast)trunc(x), (cast)ceil(x), or (cast)floor(x). In addition, C's floating-point to integer conversion functions, lrint(), llrint(), lround(), and llround() can be used. They all meet LIA-1's requirements on floating to integer rounding for in-range values. For out-of-range values, the conversions must silently wrap for the modulo types. 3 The fmod() function is useful for doing silent wrapping to unsigned integer types, eg, fmod( fabs(rint(x)), 65536.0 ) or (0.0 <= (y = fmod( rint(x), 65536.0 )) ? y : 65536.0 + y) will compute an integer value in the range 0.0 to 65535.0 which can then be cast to unsigned short. But, the remainder() function is not useful for doing silent wrapping to signed integer types, eg, remainder( rint(x), 65536.0 ) will compute an integer value in the range -32767.0 to +32768.0 which is not, in general, in the range of signed short. 4 C's conversions (casts) from floating-point to floating-point can meet LIA-1 requirements if an implementation uses round-to-nearest (IEC-559 default). 5 C's conversions (casts) from integer to floating-point can meet LIA-1 requirements if an implementation uses round-to-nearest. In H.3.1 Notification alternatives: Paragraph 4, replace "User provided" with "User-provided". In H.3.1.1 Indicators: Paragraph 3, replace "a LIA-1 indicator subset" with "a subset of the LIA-1 indicators". Paragraph 5, replace "is making" with "makes". In H.3.1.2 Traps: Replace paragraph 4 with: C supports signal handlers for SIGFPE and allows trapping of arithmetic exceptions. When arithmetic exceptions do trap, C's signal-handler mechanism allows trap-and-terminate (either default implementation behavior or user replacement for it) or trap-and-resume, at the programmer's option.